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

8

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

Я включил отслеживание Failed Request, и никаких ошибок не выдается.

Бен
источник
system.webServer<urlCompression doStaticCompression="true" doDynamicCompression="true" />
Можете ли
К сожалению, это не имеет значения. Кроме того, в IIS 7.5 значение по умолчанию для doDynamicCompressionизменено на true.
Бен
ваши изменения работают в IIS Express?
Tugberk
нет, должен был сделать то же самое (изменить applicationHost.config напрямую)
Бен
Вы когда-нибудь решали эту проблему?
Mario

Ответы:

3

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

 <add mimeType="application/json; charset=utf-8" enabled="true" />
JeremyBeadle
источник
1

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

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

Илан
источник
0

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

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

BornToCode
источник