1

默认情况下,IIS 安装了 gzip 压缩 HTTP 模块。后来,我为 IIS 安装了 Brotli Compression HTTP Module 以提高浏览内容的压缩率。在 ApplicationHost.config 中,brotli 已添加到如下三个地方。

  1. 全局模块
  2. http压缩
  3. 模块

    <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 需要为其他应用程序站点工作。

提前致谢。

4

0 回答 0