如何在ASP.NET MVC中禁用HTTP Keep-Alive?

时间:2009-12-29 18:07:30

标签: asp.net asp.net-mvc iis

有没有办法告诉IIS / ASP.NET不允许某些请求保持活动状态?或者甚至整个网站,如果这真的是唯一的方法吗?

4 个答案:

答案 0 :(得分:4)

对于整个站点,使用IIS 7 ....

<configuration>
   <system.webServer>
      <httpProtocol allowKeepAlive="false" />
   </system.webServer>
</configuration>

<强> PS。
我意识到这个问题只是关于如何禁用该功能。但是,我认为值得一提的是,禁用KeepAlive是我试图解决的问题的一个红色鲱鱼。我有一个问题,即jQuery Ajax POST无法将正文内容发送到服务器。虽然启用/禁用KeepAlive似乎确实影响了我可以重现我的问题,但实际修复是在站点根目录禁用Windows身份验证。这是因为浏览器(幕后)在网站的根目录(甚至在您的应用程序文件夹之外)发送了对favicon.ico的请求,并且如果您在该级别打开了Windows Auth,则NTLM Authenticate握手开始, (从技术角度来说)它可以解决所有问题。

所以我最终从我的配置文件中删除了这一行,以便它可以作为默认设置运行,并启用了KeepAlive ......顺便提一下,这样可以提高性能。

答案 1 :(得分:3)

非常确定无法在请求级别完成。

在IIS 6.0中,it was exposed in a tab of IIS properties。在IIS 7中,它们类似于hid it

答案 2 :(得分:1)

如果你真的想这样做,请调整this answer中的IHttpModule来调用Response.Close处理程序中的HttpApplication.EndRequest

“don’t use this API ever”

more info on the ways to end a response...

答案 3 :(得分:0)

IIS 6.0中默认启用HTTP Keep-Alives,符合HTTP Keep-Alives的HTTP / 1.1规范。只要ConnectionTimeout配置数据库属性指定(默认值为120秒),IIS就会保持打开非活动连接。

您可以通过以下链接禁用HTTP Keep Alive,它是为了启用您必须执行反向禁用。

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/d7e13ea5-4350-497e-ba34-b25c0e9efd68.mspx?mfr=true