У меня есть некоторые веб-службы WCF, работающие под IIS 7.5, которые правильно отвечают на HTTP-запросы, но отвечают ошибками 404 (Not Found) при вызове методов с использованием SSL.
Привязки для сайта следующие:
При звонке http://127.0.0.1:8088/Public/PublicDataService.svc Получаю ожидаемый ответ:
Вы создали услугу.
Чтобы протестировать эту службу, вам нужно будет создать клиента и использовать его для вызова службы. Вы можете сделать это с помощью инструмента svcutil.exe из командной строки со следующим синтаксисом: и т. Д.
И аналогично вызов любого из методов службы работает, есть самый простой метод, называемый CanConnect, который просто возвращает "истину".
http://127.0.0.1:8088/Public/PublicDataService.svc/CanConnect
правда
При использовании 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" />