HttpContext.RewritePath打破了buildin IIS gzip

Omn*_*nik 5 iis gzip rewritepath

你好.

HttpContext.RewritePath用来根据请求和主机将请求定向到内部站点文件夹.

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


例如:
出错的情况:
请求url: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标题.

无错误的情况:
请求URL: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.有没有办法让他们成为朋友?