默认情况下,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 需要为其他应用程序站点工作。
提前致谢。