IIS 6关闭连接 - 如何保持持久性?

时间:2012-01-23 20:49:33

标签: iis-6 http-headers windows-authentication

我的公司有两个以客户配置为模型的测试服务器,

  • 一个使用Windows Server 2003 SP2,IIS 6和Tomcat 5.5,
  • 使用Windows Server 2008 R2,IIS 7和Tomcat 6。

两个IIS都配置为使用Windows身份验证,并为Tomcat提供ISAPI筛选器。

使用IIS 6计算机,服务器通过发送标题“Connection:close”关闭每个经过身份验证的http连接。使用IIS 7计算机,服务器使用持久连接,并发送标头“Persistent-Auth:true”。 IIS 6的客户具有与我们的测试服务器相同的连接关闭行为,这使得由于NTLM身份验证而导致的网络往返次数增加了三倍。

为什么IIS 6服务器关闭连接,如何使其使用持久连接?<​​/ p>

我对两台服务器都有RDP管理员访问权限,并乐意提供任何有用的信息并进行实验。

更新

我发现问题部分是由过时版本的ISAPI过滤器(isapi_redirect.dll)引起的。将该过滤器更新为1.2.32后,我不再获得html页面的“Connection:close”标题。但是,当客户端applet访问返回序列化Java对象的服务时,我仍然会得到它。

1 个答案:

答案 0 :(得分:1)

我发现问题与身份验证无关。 Tomcat servlet使用 chunked transfer encoding 作为响应,而ISAPI过滤器未配置为处理它,这似乎迫使IIS 6关闭连接。 IIS 7似乎收集了响应块,并将整个响应(未分块)发送给调用者。

升级到版本1.2.32并使用ISAPI过滤器的enable_chunked_encoding属性启用分块编码后,如reference guide中所述,连接不再关闭。