У меня есть некоторые веб-службы WCF, работающие под IIS 7.5, которые правильно отвечают на HTTP-запросы, но при вызове методов с использованием SSL выдают ошибку 404 (не найдено).
Привязки для сайт выглядит следующим образом:
И аналогично вызову любого из методов службы работает самый простой метод, называемый CanConnect, который просто возвращает "true"
http://127.0.0.1:8088/Public/ PublicDataService.svc / CanConnect
true
При использовании https результатом является следующее.
https://127.0.0.1/Public/PublicDataService.svc
Вы создали службу.
Чтобы протестируйте эту услугу, вам нужно будет создать клиента и использовать его для позвонить в сервис. Вы можете сделать это с помощью инструмента svcutil.exe из командная строка со следующим синтаксисом:
https://127.0.0.1/Public/PublicDataService.svc/CanConnect
Ошибка сервера в приложении «/ Public».
Не удается найти ресурс.
Описание : HTTP 404. Ресурс, который вы ищете (или один из зависимости) мог быть удален, его имя было изменено или Временно недоступен. Просмотрите следующий URL и сделайте убедитесь, что он написан правильно.
Запрошенный URL: /Public/PublicDataService.svc/CanConnect
Информация о версии: Microsoft .NET Framework Версия: 4.0.30319; Версия ASP.NET: 4.6.1055.0
Это меня полностью озадачило: как вызовы .svc работают, но его внутренние методы дают 404? Чтобы еще больше запутать ситуацию, это работало ... на самом деле я даже не уверен, когда он остановился, т.е. соответствует ли это выпуску кода или исправлениям сервера и т.д.
Фактическая конфигурация веб-сайта выглядит следующим образом:
Webservices (this is the root of the application / where the Web.Config sits)
- Public (a windows directory, no addition config)
Есть ряд других сервисов, которые работают непосредственно под корневым каталогом, которые нормально работают как под http, так и с https.
Есть идеи относительно того, что могло быть причиной этого.
Оказывается, это просто ошибка в файле web.config.
Эти два ответа на SO были решением:
https://stackoverflow.com/a / 26581326/1286358
И наоборот
https://stackoverflow.com/a/26539003/1286358
Странно, что он работал как с http, так и с https один раз, а затем просто остановился .... должно быть были некоторые другие изменения конфигурации в другом месте ..
РЕДАКТИРОВАТЬ: Фактическое исправление для полноты
Следующее было в web.config было изменено с "none" на "Transport"
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding>
<security mode="Transport" />