我们在暂存环境中遇到问题,从IIS中的Asp.Net webforms应用程序提供JavaScript和css文件会导致Google Chrome中出现以下错误
Failed to load resource: net::ERR_CONTENT_DECODING_FAILED
在Firefox中,它显示为
Loading failed for the <script> with source “https://blah/jquery.tmpl.min.js
如果应用程序在应用程序池设置为经典管道模式的情况下运行,并且它已经运行了多年,则此方法可正常工作。 它们仅在应用程序池设置为集成管道模式时出现,我们需要进行即将发生的更改。它在任一管道模式下都可以在QA服务器上正常工作。服务器设置为使用Deflate压缩。
我们还使用名为intelligencia的第三方网址重写器已使用多年。这会将website.net/{customerSiteKey}/scripts/script1.js
之类的网址重写为website.net/scripts/script1.js
场景1(按预期工作)
在集成管道模式中,直接访问真实资源URL website.net/scripts/script1.js
可以直接正常工作 - 服务器返回Content-Encoding:Deflate的响应头,并且响应体已编码且资源有效。
场景2(已破碎)
在集成模式下访问需要重写的url
website.net/{customerSiteKey}/scripts/script1.js
无法正常工作 - Content-Encoding的响应标头:Deflate但响应正文未编码并且是纯文本,导致浏览器无法加载脚本,因为他们尝试解码未编码的内容。
在经典模式下,两种情况都可以正常工作。
我正在寻找与经典vs集成模式相关的原因,但仅针对重写的url,这些url会以某种方式设置压缩标头,但不会压缩主体。
我一直在比较QA和登台之间的applicationhost.config和web.config文件以查看是否存在模块订单问题,但到目前为止,任何差异都无法帮助我在本地重新创建问题无关紧要。
还有什么可能是导致此问题的原因,因为我不确定还有什么可以调查/尝试?