.net - 如何在特定应用程序上禁用 BrotliCompressionModule
问题描述
默认情况下,IIS 安装了 gzip 压缩 HTTP 模块。后来,我为 IIS 安装了 Brotli Compression HTTP Module 以提高浏览内容的压缩率。在 ApplicationHost.config 中,brotli 已添加到如下三个地方。
- 全局模块
- http压缩
模块
<system.webServer> <globalModules> <add name="BrotliCompressionModule" image="%Windir%\system32\inetsrv\IisBrotli.dll" preCondition="bitness64" /> </globalModules> <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files"> <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" /> <scheme name="br" dll="%Windir%\system32\inetsrv\IisBrotli.dll" staticCompressionLevel="5" dynamicCompressionLevel="5" /> </httpCompression> <location path="" overrideMode="Allow"> <system.webServer> <modules> <add name="BrotliCompressionModule" preCondition="managedHandler,runtimeVersionv4.0" /> </modules> </system.webServer> </location>
我有仪表板应用程序,它是 32 位应用程序,兼容在 IIS 上运行,在 IIS 中安装 Brotli 压缩 HTTP 模块之前,应用程序运行良好。
安装 brotli 压缩后,由于 brotli 停止了 DashboardApplication 池,应用程序无法运行。然后我找到了这个问题的以下根本原因。
Brotli 是 64 位应用程序,它不允许在 IIS 上使用我的 32 位应用程序。基于论坛解决方案,我添加了 preConditon="bitness64",它有助于单独运行 64 位应用程序的 globalModules。
上述解决方案有助于避免停止应用程序池。然后提出了新问题,因为找不到 BrotliCompressionModule 文件。我们找到了从我的应用程序的 web.config 中删除 brotli 模块的解决方案,如下所示。它有助于解决找不到文件的问题。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="BrotliCompressionModule" />
</modules>
</system.webServer>
然后,另一个问题 -HTTP 错误 500.19 - 出现错误代码 0x800700c1 的内部服务器错误。
我们已经避免了对局部部分的 brotli 压缩,但不是在部分中。
如果我从 httpCompression 部分删除了 Brotli,我的 32 位仪表板应用程序运行良好。但它不会压缩 brotli 模块中的其他应用程序。
我怀疑我们也需要在 httpCompression 部分避免 brotli,但我找不到解决方案。
注意:我需要 gzip 和 br(Brotli) 压缩。因为 Brotli 被用于我的其他 64 位应用程序。
这是否可以禁用 IIS 上特定 32 位应用程序的 brotli 压缩?同时,Brotli 需要为其他应用程序站点工作。
提前致谢。
解决方案
推荐阅读
- javascript - 为什么会出现这个错误(“因为这个错误发生在我们跳过当前套件中剩余的测试之前的所有钩子中:”)?
- unix - 用文件集中的当前时间戳替换旧时间戳
- shell - Shell 变量不是通过脚本中的导出创建的
- amazon-cloudwatchlogs - Cloudwatch 记录洞察力在 concat 输出上合并
- python - 检索上传到 GridFS (mongodb) 的 csv
- c - 8的乘法表中出现的数字总和。我的代码有什么问题?理想的输出是 440,我得到 33204
- flutter - 没有在 iOS 设备上获取 Firebase 通知,但是当我发送通知时抛出 Firebase 控制台,然后我收到了通知
- javascript - 我想为使用 requirejs 的 angularjs 控制器编写 jasmine 测试用例。我对 angularjs 和编写测试用例都很陌生
- flutter - 在鼠标移动时,它会在颤动中使用画布上的 drawImage 拖动按钮单击时给出的图标或图像
- python - 在 pyspark 中每隔 1 小时从 postgres DB 读取数据