IIS 7.5 ignorando configurações de HttpCompression no web.config

8

Estou tentando habilitar a compactação dinâmica para o tipo mime application/json.

No applicationHost.config, fiz a seguinte alteração:

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

Também tentei desbloquear a seção com o seguinte comando:

appcmd unlock config /section:system.webserver/httpcompression

Minhas configurações do web.config (o mesmo que applicationHost.config, mas com tipo mimet adicional):

    <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>

Mas a resposta não está sendo compactada. Eu sei que as configurações estão corretas, pois funcionam se eu adicionar o tipo mimet diretamente ao applicationHost.config.

Ativei o Rastreamento de solicitação com falha e nenhum erro é produzido.

Ben
fonte
u também pode tentar adicionar esta sob system.webServernó:<urlCompression doStaticCompression="true" doDynamicCompression="true" />
tugberk
Infelizmente isso não fez diferença. Além disso, no IIS 7.5, o valor padrão para doDynamicCompressionalterado para true.
Ben Ben
suas alterações funcionam no IIS Express?
tugberk
Não, tinha que fazer a mesma coisa (mudar applicationHost.config diretamente)
Ben
Você já resolveu esse problema?
Mario

Respostas:

3

Tente também adicionar o tipo mime:

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

Estou tendo o mesmo problema, ou seja, tentando fazer o IIS (IIS 10 no meu caso) gzip, application/jsonmas descobri uma solução alternativa.

Eu tentei editar o ApplicationHost.config, bem como o web.config, sem sorte. O IIS simplesmente ignora qualquer configuração de compactação para dados .json. Felizmente, ele compactará qualquer outro tipo de mim que você diz. Então mudei o tipo mimet para text/jsonweb.config e agora gzipou as respostas:

<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>

Claro que isso pode quebrar outras coisas - porque agora sua resposta Content-Type:text/json

Ilan
fonte
0

O HttpCompression do web.config é possível apenas se você usar o IIS 10. No IIS 7.5, você precisará usá-lo no appHost.config.

Eu também estava lutando até encontrar essa informação neste post .

BornToCode
fonte