我的公司有两个以客户配置为模型的测试服务器,
两个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对象的服务时,我仍然会得到它。
答案 0 :(得分:1)
我发现问题与身份验证无关。 Tomcat servlet使用 chunked transfer encoding 作为响应,而ISAPI过滤器未配置为处理它,这似乎迫使IIS 6关闭连接。 IIS 7似乎收集了响应块,并将整个响应(未分块)发送给调用者。
升级到版本1.2.32并使用ISAPI过滤器的enable_chunked_encoding
属性启用分块编码后,如reference guide中所述,连接不再关闭。