Назад | Перейти на главную страницу

Тайм-аут 130 секунд при доступе к сервису по HTTPS через HTTP

У меня есть клиентское приложение Windows и служба Windows, в которой размещается веб-служба через HTTPS (за ней используется стандартный http.sys). Все в порядке, кроме ситуации, когда пользователь ошибается и использует HTTP с портом HTTPS для доступа к сервису. Например, сервис выставлен на: https://somehost:9000 но пользователь неправильно устанавливает http://somehost:9000.

Обычно, если конечная точка недоступна, клиент получает сообщение 404 Not found, но в этом случае конечная точка доступна, но хост сначала ожидает подтверждения SSL \ TLS. Когда клиент вызывает службу с использованием чистого HTTP, он зависает, и клиент ждет тайм-аутов. Более того, я обнаружил, что это какое-то глобальное поведение, потому что веб-службы, представленные в IIS через HTTPS, вызываемые через браузер с HTTP, ведут себя точно так же. Тайм-аут всегда равен 130 секундам. Keep-alive для соединений в IIS настроен на 120 секунд, поэтому он не выглядит коррелированным.

Какой тайм-аут используется в этом случае? Можно ли это изменить (вопрос немного абстрактный, потому что я еще не знаю, что хочу изменить)?

Я думаю, вы можете использовать модуль перезаписи URL, который вид прозрачный редирект на правильный протокол; вот некоторые детали

установите и включите перезапись URL-адреса и настройте виртуальный сайт ISS так, чтобы он не требовал-ssl, чтобы он мог обрабатывать HTTP-запрос и отправлять http-редирект обратно на https:// вот так

<rule name="HTTP to HTTPS redirect" stopProcessing="true">
  <match url="(.*)" />
    <conditions>
      <add input="{HTTPS}" pattern="off" ignoreCase="true" />
    </conditions>
  <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule>

Эта стратегия лучше, чем внесение возможных критических изменений в общесистемные параметры TCP.


Альтернативой является установка соответствующих значений тайм-аута для компонента http.sys в вашем приложении. Некоторые значения и параметры по умолчанию упомянуты в этом документе здесь;

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/31a2f39c-4d59-4cba-905c-60e7af657e49.mspx?mfr=true