根据我的研究,出于此处所述的原因,IIS 7.5 在其响应中不包括Connection:Keep-Alive。不幸的是,我有一个不符合要求的客户端连接到我的 Web 服务,除非它在响应标头中看到Connection:Keep-Alive ,否则它不会重用套接字。我尝试以编程方式添加此标头,但 IIS 似乎故意将其删除。有没有其他方法可以强制将此标头发送回我的顽皮客户?
问问题
9864 次
1 回答
9
我为此向 Microsoft 开了一张支持票,并证实了我最糟糕的怀疑。IIS 7.5 故意阻止在响应中返回 connection:keep-alive 标头。根据 HTTP 1.1 RFC,所有连接都应假定保持活动状态(与 HTTP 1.0 不同)。因此,省略此标头是默认且正确的 (?) 行为。当不需要保持活动时,IIS 将发送 connection:close 标头。
真正让我吃惊的是 IIS 将竭尽全力阻止发送此标头。无论如何添加,IIS 管道中的某些内容都会删除此标头。(我的 MVC 应用程序中的 C# 代码,IIS 管理器-->HTTP 响应标头,IIS 管理器-->URL 重写模块)。
您可能会认为 MS 会允许某种形式的逃生阀,因为在野外有如此多的不符合标准的 HTTP 1.1 客户端,除非他们看到此标头,否则它们根本不会运行。
于 2013-12-02T16:56:13.270 回答