如何在使用压缩动态内容时禁用分块传输编码?

时间:2009-05-21 18:55:35

标签: iis internet-explorer-6 gzip scriptmanager transfer-encoding

我想在我的网络服务器上禁用分块传输编码,以避免此错误: http://support.microsoft.com/kb/871205。不幸的是,我需要在Win2k上支持IE6,因此他们无法安装补丁。

我找到了将AspEnableChunkedEncoding设置为FALSE的说明,但这似乎并没有解决我的问题。我相信这是因为我们还使用gzip压缩,根据这篇文章(http://www.eggheadcafe.com/conversation.aspx?messageid=31045986&threadid=31045970),压缩编码需要压缩动态内容。因此,所有动态压缩的内容都被“分块”传输,因为它是由gzip过滤器压缩的,而不是ASP.NET。

我知道IIS可以无内容地提供这些内容,因为我尝试在请求中使用http 1.0(不支持transfer-encoding:chunked),并且响应正确到达并压缩。

如何在使用ScriptManager时禁用分块编码,这需要动态压缩生成的“.axd”文件?

1 个答案:

答案 0 :(得分:1)

由于您无法更改IIS中GZip压缩的行为或让您的客户端升级到新操作系统,为什么不有条件地关闭特定用户代理字符串的GZip压缩。

在Apache上,您可以使用mod重写来执行此操作(see here),其中包含以下几行:

RewriteEngine on

RewriteCond %{HTTP:User-Agent} MSIE\ [56]
RewriteCond %{HTTP:User-Agent} !SV1
RewriteCond %{REQUEST_URI} \.(css|js)$
RewriteHeader Accept-Encoding: .* $1

server fault thread表示您可以使用ISAPI Rewrite来使用相同的指令并获得相同的结果。看起来免费的“Lite”版本也支持这些指令,因此您不必购买任何许可证。