Как отключить HTTP Keep-Alive в ASP.NET MVC?
есть ли способ сообщить IIS / ASP.NET не позволять Keep-Alive для определенных запросов? Или даже для всего веб-сайта, если это действительно единственный способ сделать это?
4 ответов
уверен, что это не может быть сделано на уровне запроса.
в IIS 6.0, он был выставлен на вкладке свойств IIS. В IIS 7, они вроде спрятал.
для всего сайта, используя IIS 7....
<configuration>
<system.webServer>
<httpProtocol allowKeepAlive="false" />
</system.webServer>
</configuration>
PS.
Я понимаю, что этот вопрос касается только того, как отключить эту функцию. Однако я подумал, что стоит упомянуть, что отключение KeepAlive было отвлекающим маневром для проблемы, которую я пытался решить. У меня была проблема, когда сообщение jQuery Ajax не сможет отправить содержимое тела на сервер. Хотя включение / выключение KeepAlive, похоже, повлияло на то, насколько я мог воспроизвести свою проблему, фактическое исправление было отключение проверки подлинности Windows в корень сайта. Это связано с тем, что браузер (за кулисами) отправляет запрос на favicon.ico в корне веб-сайта (даже за пределами папки приложения), и если у вас есть Windows Auth включен на этом уровне, NTLM аутентифицирует рукопожатие, и (в техническом плане) он подключает все.
поэтому я удалил эту строку из своего файла конфигурации, чтобы она работала как настройка по умолчанию с включенным KeepAlive..... который кстати лучше для производительности.
Если вы действительно хотите это сделать, адаптируйте IHttpModule в ответ называть ответ.Закрыть на HttpApplication.EndRequest обработчик.
HTTP Keep-Alives включены по умолчанию в IIS 6.0, который соответствует спецификации HTTP / 1.1 для HTTP Keep-Alives. IIS сохраняет открытым неактивное соединение до тех пор, пока свойство метабазы ConnectionTimeout указывает (значение по умолчанию-120 секунд).
вы можете отключить HTTP Keep Alive, перейдя по ссылке ниже, это для того, чтобы вы могли бы сделать обратное, чтобы отключить.