IIS 7.5 ignorant les paramètres HttpCompression dans web.config

8

J'essaie d'activer la compression dynamique pour le type mime application/json.

Dans applicationHost.config, j'ai apporté la modification suivante:

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

J'ai également essayé de déverrouiller la section avec la commande suivante:

appcmd unlock config /section:system.webserver/httpcompression

Mes paramètres web.config (identiques à applicationHost.config mais avec un mimetype supplémentaire):

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

Mais la réponse n'est pas compressée. Je sais que les paramètres sont corrects car cela fonctionne si j'ajoute le type MIME directement à applicationHost.config.

J'ai activé le suivi des demandes ayant échoué et aucune erreur n'est produite.

Ben
la source
pouvez-vous également essayer d'ajouter ceci sous le system.webServernœud:<urlCompression doStaticCompression="true" doDynamicCompression="true" />
tugberk
Malheureusement, cela n'a fait aucune différence. En outre, dans IIS 7.5, la valeur par défaut pour a doDynamicCompressionchangé en true.
Ben
vos modifications fonctionnent-elles dans IIS Express?
tugberk
non, a dû faire la même chose (changer directement applicationHost.config)
Ben
Avez-vous déjà résolu ce problème?
Mario

Réponses:

3

Essayez également d'ajouter le type MIME:

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

J'ai le même problème, c'est-à-dire essayer d'obtenir IIS (IIS 10 dans mon cas) pour gzip, application/jsonmais j'ai découvert une solution de contournement.

J'ai essayé de modifier le ApplicationHost.config ainsi que le web.config sans succès. IIS ignore simplement les paramètres de compression des données .json. Cependant, il compressera avec plaisir tout autre type de mime que vous lui direz de compresser. J'ai donc changé le mimetype text/jsonen web.config et maintenant j'ai des réponses compressées:

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

Bien sûr, cela peut casser d'autres choses - parce que maintenant votre réponse a Content-Type:text/json

Ilan
la source
0

HttpCompression à partir de web.config n'est possible que si vous utilisez IIS 10. Sur IIS 7.5, vous devrez l'utiliser sur appHost.config.

Je me battais aussi jusqu'à ce que je trouve cette information sur ce post .

BornToCode
la source