IIS 7.5 ignorando la configuración de HttpCompression en web.config

8

Estoy tratando de habilitar la compresión dinámica para el tipo mime application/json.

En applicationHost.config, he realizado el siguiente cambio:

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

También intenté desbloquear la sección con el siguiente comando:

appcmd unlock config /section:system.webserver/httpcompression

Mi configuración de web.config (igual que applicationHost.config pero con mimetype 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>

Pero la respuesta no se está comprimiendo. Sé que la configuración es correcta, ya que funciona si agrego el tipo MIME directamente a applicationHost.config.

He habilitado el seguimiento de solicitudes fallidas y no se producen errores.

Ben
fuente
u puede también tratar de añadir esto bajo system.webServerel nodo:<urlCompression doStaticCompression="true" doDynamicCompression="true" />
tugberk
Lamentablemente esto no hizo ninguna diferencia. Además, en IIS 7.5, el valor predeterminado para doDynamicCompressioncambiado a true.
Ben
Cómo funcionan sus cambios en IIS Express?
tugberk
no, tenía que hacer lo mismo (cambiar applicationHost.config directamente)
Ben
¿Has resuelto alguna vez este problema?
Mario

Respuestas:

3

Intente también agregar el tipo mime:

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

Estoy teniendo el mismo problema, es decir, tratando de hacer que IIS (IIS 10 en mi caso) gzip application/jsonpero descubrí una solución alternativa.

He intentado editar ApplicationHost.config y web.config sin suerte. IIS simplemente ignora cualquier configuración de compresión para datos .json. Sin embargo, felizmente comprimirá cualquier otro tipo de mime que le digas que comprima. Así que cambié el tipo MIME a text/jsonen web.config y ahora tengo las respuestas comprimidas:

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

Por supuesto, eso puede romper otras cosas, porque ahora su respuesta tiene Content-Type:text/json

Ilan
fuente
0

HttpCompression de web.config solo es posible si usa IIS 10. En IIS 7.5 tendrá que usarlo en appHost.config.

También estaba luchando hasta que encontré esa información en esta publicación .

BornToCode
fuente