IIS 7.5 忽略 web.config 中的 HttpCompression 设置

IIS 7.5 忽略 web.config 中的 HttpCompression 设置

我正在尝试为 MIME 类型启用动态压缩application/json

在 applicationHost.config 中,我做了以下更改:

<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Allow" />

我还尝试使用以下命令解锁该部分:

appcmd unlock config /section:system.webserver/httpcompression

我的 web.config 设置(与 applicationHost.config 相同,但具有附加的 mimetype):

    <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
        <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
        <staticTypes>
            <add mimeType="text/*" enabled="true" />
            <add mimeType="message/*" enabled="true" />
            <add mimeType="application/x-javascript" enabled="true" />
            <add mimeType="application/atom+xml" enabled="true" />
            <add mimeType="application/xaml+xml" enabled="true" />
            <add mimeType="*/*" enabled="false" />
        </staticTypes>
        <dynamicTypes>
            <add mimeType="text/*" enabled="true" />
            <add mimeType="message/*" enabled="true" />
            <add mimeType="application/x-javascript" enabled="true" />
            <add mimeType="application/json" enabled="true" />
            <add mimeType="*/*" enabled="false" />
        </dynamicTypes>
    </httpCompression>

但响应未被压缩。我知道设置是正确的,因为如果我将 mimetype 直接添加到 applicationHost.config,它就会起作用。

我已启用失败请求跟踪并且没有产生任何错误。

答案1

尝试添加 mime 类型:

 <add mimeType="application/json; charset=utf-8" enabled="true" />

答案2

我遇到了同样的问题,即尝试让 IIS(在我的情况下是 IIS 10)进行 gzip,application/json但发现了一种解决方法。

我尝试编辑 ApplicationHost.config 以及 web.config,但没有成功。IIS 只是忽略了 .json 数据的任何压缩设置。但它很乐意对任何其他你告诉它压缩的 mimetype 进行 gzip 压缩。因此,我text/json在 web.config 中将 mimetype 更改为,现在我有了 gzip 压缩的响应:

<system.webServer>
  <staticContent>
    <remove fileExtension=".json" />
    <mimeMap fileExtension=".json" mimeType="text/json" />
  </staticContent>
  <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
    <dynamicTypes>
      <add mimeType="text/json" enabled="true"/>
    </dynamicTypes>
    <staticTypes>
      <add mimeType="text/json" enabled="true"/>
    </staticTypes>
  </httpCompression>
  <urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>

当然,这可能会破坏其他东西 - 因为现在你的回应已经Content-Type:text/json

答案3

仅当您使用 IIS 10 时才可以从 web.config 中使用 HttpCompression。在 IIS 7.5 上,您必须在 appHost.config 上使用它。

我也一直在努力,直到我找到了那个信息在这篇文章中

相关内容