HttpContext.RewritePath打破了buildin IIS gzip

时间:2012-05-29 15:13:23

标签: iis gzip rewritepath

您好。

我正在使用HttpContext.RewritePath根据请求和主机将请求定向到内部站点文件夹。

问题: 当我对IIS缓存和GZIP的任何静态文件执行任何需要RewritePath的请求时,我会回复带有Content-Encoding: gzip标头的原始非压缩文件内容,这会导致“内容解码失败”错误。 但是当我执行相同的请求但是使用完整的目录路径时(在我的代码中跳过了RewritePath),我使用Content-Encoding: gzip获得了正确的gzip压缩内容。


例如为:
有错误的情况:
请求网址:localhost/lib/ext_3.4.0/resources/css/ext-all.css
使用HttpContext.RewritePath将请求路径重写为:localhost/_sites/mainSite/lib/ext_3.4.0/resources/css/ext-all.css

第一个响应不是gzip - 通常的IIS行为。当我按ctrl + F5时,我得到“内容解码失败”错误。通过使用Fiddler2,我可以看到响应内容不是gzip压缩的,它包含Content-Encoding: gzip标题。

没有错误的情况:
请求网址:localhost/_sites/mainSite/lib/ext_3.4.0/resources/css/ext-all.css
请求路径不会重新编写,因为它不需要。

第一个响应不再被gzipped。当我按ctrl + F5时,我得到正常的文件内容。通过使用Fiddler2,我可以看到响应内容被gzip压缩,大小减少了5倍,并且包含Content-Encoding: gzip标题。


我不能丢弃RewritePath,我需要IIS gzip。有没有办法让他们成为朋友?

0 个答案:

没有答案