IIS 7.5 ignora le impostazioni di HttpCompression in web.config


8

Sto cercando di abilitare la compressione dinamica per il tipo mime application/json.

In applicationHost.config, ho apportato la seguente modifica:

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

Ho anche provato a sbloccare la sezione con il seguente comando:

appcmd unlock config /section:system.webserver/httpcompression

Le mie impostazioni web.config (uguale a applicationHost.config ma con mimetype aggiuntivo):

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

Ma la risposta non viene compressa. So che le impostazioni sono corrette poiché funziona se aggiungo il mimetype direttamente a applicationHost.config.

Ho abilitato la traccia richieste non riuscite e non vengono generati errori.


puoi anche provare ad aggiungere questo sotto system.webServernodo:<urlCompression doStaticCompression="true" doDynamicCompression="true" />
tugberk

Purtroppo questo non ha fatto differenza. Inoltre, in IIS 7.5 il valore predefinito per è doDynamicCompressioncambiato in true.
Ben

le tue modifiche funzionano in IIS Express?
Tugberk,

no, dovevo fare la stessa cosa (cambia direttamente applicationHost.config)
Ben

Hai mai risolto questo problema?
Mario,

Risposte:


3

Prova anche ad aggiungere il tipo mime:

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

1

Sto riscontrando lo stesso problema, ovvero provare a far gzip di IIS (nel mio caso IIS 10) application/jsonma ho scoperto una soluzione alternativa.

Ho provato a modificare ApplicationHost.config e web.config senza fortuna. IIS ignora semplicemente qualsiasi impostazione di compressione per i dati .json. Sarà felicemente decomprimere qualsiasi altro mimetipo che dirai comprimere però. Quindi ho cambiato il mimetype in text/jsonin web.config e ora ho le risposte 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>

Ovviamente ciò potrebbe rompere altre cose - perché ora la tua risposta ha Content-Type:text/json


0

HttpCompression da web.config è possibile solo se usi IIS 10. Su IIS 7.5 dovrai usarlo su appHost.config.

Ho anche combattuto fino a quando non ho trovato le informazioni su questo post .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.