Назад | Перейти на главную страницу

IIS 7.5 игнорирует настройки HttpCompression в web.config

Я пытаюсь включить динамическое сжатие для типа пантомимы 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.

Я включил отслеживание неудачных запросов, и никаких ошибок не возникает.

Попробуйте также добавить тип пантомимы:

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

У меня такая же проблема, то есть я пытаюсь получить IIS (IIS 10 в моем случае) для gzip application/json но нашли обходной путь.

Я безуспешно пытался редактировать ApplicationHost.config, а также web.config. IIS просто игнорирует любые настройки сжатия для данных .json. Однако он с радостью заархивирует любой другой mimetype, который вы ему укажете. Поэтому я изменил тип mimetype на text/json в web.config, и теперь у меня есть сжатые ответы:

<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

HttpCompression из web.config возможно, только если вы используете IIS 10. В IIS 7.5 вам нужно будет использовать его в appHost.config.

Я тоже боролся с этим, пока не нашел эту информацию на этом посте.