Мы публикуем API asp.net:
http://API.domain.com/v3/service.svc
https://API.domain.com/v3/service.svc
На прошлой неделе возникла проблема с поврежденным сертификатом SSL, что означало, что подключение к HTTPS ref не удалось из-за проблемы с подключением к Internet Explorer. С HTTP ref все было в порядке, была подтверждена проблема с повреждением SSL.
Клиент, который должен был использовать HTTPS, никогда не замечал, журналы подтвердили, что он фактически использует HTTP для аутентификации и данных.
При тестировании с помощью WCF STORM (тестовое приложение, которое я использовал для тестирования вызовов методов) я мог воссоздать проблему, т. Е. HTTP ok и HTTPS не удалось. Установка сертификата резервного копирования мгновенно решила проблему, и все вернулось к нормальной работе.
Итак, я начал изучать перенаправления HTTP на HTTPS. Получил и запустил, используя http://www.iis -aid.com / article / how_to_guides / redirect_http_to_https_iis_7 (т.е. изменение в web.config).
При просмотре URL моего API HTTP и HTTPS все работало как положено.
При использовании WCF STORM я получаю сообщение:
System.InvalidOperationException: The document at the url http://API.domain.com/v3/service.svc was not recognized as a known document type.
The error message from each known type may help you fix the problem:
- Report from 'DISCO Document' is 'Discovery document at the URL http://API.domain.com/v3/service.svc?disco&disco could not be found.'.
- The document format is not recognized.
- Report from 'http://API.domain.com/v3/service.svc' is 'The document format is not recognized (the content type is 'text/html; charset=UTF-8').'.
- Report from 'WSDL Document' is 'The document format is not recognized (the content type is 'text/html; charset=UTF-8').'.
- Report from 'XML Schema' is 'The document format is not recognized (the content type is 'text/html; charset=UTF-8').'.
at System.Web.Services.Discovery.DiscoveryClientProtocol.DiscoverAny(String url)
at WcfStorm.DynamicProxy.ServiceClientProxyFactory.(Option`1 )
at WcfStorm.DynamicProxy.ServiceClientProxyFactory.DiscoverEndpoint(Option`1 cfgOption)
at WcfStorm.Model.WcfServiceModel.(ServiceClientProxyFactory )
at WcfStorm.Lib.Common.BgWorker`2.OnDoWork(DoWorkEventArgs e)
Client proxy code is empty!
Я помню, как один из разработчиков сказал мне, что AUTHENTICATION использует SSL, но сообщения SOAP передаются по HTTP. Поэтому я подозреваю, что перенаправление HTTP на HTTPS вызвало эту проблему, поскольку оно заставляет сообщения SOAP использовать HTTPS, а API не был настроен для этого .... Я предполагаю? Разработчик пояснил, что рекомендуется API, использующие HTTP для передачи данных SOAP после аутентификации с использованием SSL для подтверждения учетных данных.
Вопросы:
Как заставить данные SOAP передаваться по HTTPS, если это считается решением?
Если это невозможно, как развернуть перенаправление HTTP на HTTPS в указанной выше среде?
Есть ли другой способ принудительно установить HTTPS для конечных пользователей / отключить HTTP и / или перенаправить на HTTPS?
Спасибо за любую помощь.