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

问题描述:

我想禁用我的网络服务器上的分块传输编码,以避免此错误: 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可以提供​​这个内容unchunked,因为我已经尝试在请求中使用http 1.0(它不支持传输编码:分块),并且响应正确到达并压缩。

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

+2

你是否为某些政府工作?吮吸支持IE6,特别是像Win2k这样古老的东西。 – 2010-11-20 02:22:23

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

在Apache上,你可以使用国防部重写做到这一点(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”版本支持,因此您不必购买任何许可证。