J'ai du mal à faire IIS 7 compresser correctement un résultat Json d'ASP.NET MVC. J'ai activé la compression statique et dynamique dans IIS. Je peux vérifier avec Fiddler que le texte normal/html et des enregistrements similaires sont compressés. En affichant la demande, l'en-tête gzip de codage accepté est présent. La réponse a le type MIME "application/json", mais n'est pas compressée.
J'ai identifié que le problème semble être lié au MimeType. Lorsque j'inclus mimeType="*/*"
, Je peux voir que la réponse est correctement compressée. Comment puis-je obtenir IIS pour compresser SANS utiliser un mimeType générique? Je suppose que ce problème a quelque chose à voir avec la façon dont ASP.NET MVC génère des en-têtes de type de contenu.
L'utilisation du processeur est bien en dessous du seuil de limitation dynamique. Lorsque j'examine les journaux de trace d'IIS, je peux voir qu'il ne parvient pas à se compresser car il n'a pas trouvé de type MIME correspondant.
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" noCompressionForProxies="false">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/json" enabled="true" />
</dynamicTypes>
<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="application/json" enabled="true" />
</staticTypes>
</httpCompression>
Assurez-vous que votre % WinDir%\System32\inetsrv\config\applicationHost.config contient ces éléments:
<system.webServer>
<urlCompression doDynamicCompression="true" />
<httpCompression>
<dynamicTypes>
<add mimeType="application/json" enabled="true" />
<add mimeType="application/json; charset=utf-8" enabled="true" />
</dynamicTypes>
</httpCompression>
</system.webServer>
Depuis le lien de @AtanasKorchev.
Comme @simon_weaver l'a dit dans les commentaires, vous pouvez éditer le mauvais fichier avec un éditeur 32 bits sur un Windows 64 bits, utilisez notepad.exe pour vous assurer que ce fichier est bien modifié.
J'ai utilisé avec succès l'approche mise en évidence ici .
Aucune de ces réponses n'a fonctionné pour moi. J'ai pris note de l'application /json; charset = utf-8 de type mime cependant.
Je recommande cette approche
Créez la classe CompressAttribute
et définissez l'action cible.