如何在使用压缩动态内容时禁用分块传输编码?
问题描述:
我想禁用我的网络服务器上的分块传输编码,以避免此错误: 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”文件进行动态压缩?
答
由于您无法更改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”版本支持,因此您不必购买任何许可证。
你是否为某些政府工作?吮吸支持IE6,特别是像Win2k这样古老的东西。 – 2010-11-20 02:22:23