根据我的研究,IIS 7.5在其响应中未包含连接:保持活动,原因为here。不幸的是,我有一个不符合要求的客户端连接到我的Web服务,它不会重用套接字,除非它在响应头中看到连接:保持活动。我已尝试以编程方式添加此标头但IIS似乎故意将其删除。有没有其他方法可以强制将此标题发送回我顽皮的客户端?
答案 0 :(得分:9)
我在这方面向微软公开了一张支持票,并确认了我最大的疑虑。 IIS 7.5故意阻止连接:在响应中返回keep-alive标头。根据HTTP 1.1 RFC,所有连接都应该保持活动状态(偏离HTTP 1.0)。因此,省略此标头是默认和正确的(?)行为。当keep-alives 不时,IIS将发送连接:close header。
真正让我感到惊讶的是IIS将竭尽全力防止此标头被发送。无论如何添加,IIS管道中的某些内容都会删除此标头。 (我的MVC应用程序中的C#代码,IIS管理器 - > HTTP响应标头,IIS管理器 - > URL重写模块)。
你会认为MS会在这上面允许某种类型的逃逸阀,因为在野外存在许多不符合要求的HTTP 1.1客户端,除非他们看到这个标题,否则它们将无法运行。