Перенаправление IIS7 HTTP на HTTPS приводит к сбою API asp.net: «документ не в распознанном формате» - PullRequest
4 голосов
/ 19 июля 2011

Мы публикуем 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 для подтверждения учетных данных.

Вопросы:

  1. Как заставить данные SOAP передаваться по HTTPS, если это считается решением?

  2. Если это невозможно, как развернуть перенаправление HTTP на HTTPS в указанной выше среде?

  3. Есть ли другой способ принудительно установить HTTPS для конечных пользователей / отключить HTTP и / или перенаправить на HTTPS?

Спасибо за любую помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...