J'ai activé la compression dans IIS7 et cela fonctionne comme prévu sur toutes les réponses à l'exception de celles construites par ASP.NET AJAX. J'ai un service Web qui fournit des données au client. Lorsque le service Web est appelé directement, il est correctement compressé. Cependant, lorsqu'elle est appelée via ASP.NET AJAX, la réponse JSON n'est pas compressée.
Comment puis-je faire en sorte qu'ASP.NET AJAX envoie sa réponse JSON avec compression GZip?
Solution du problème
IIS7 utilise le codage de contenu pour décider de compresser ou non la réponse (en supposant bien sûr que le navigateur accepte gzip). Ils sont définis dans applicationHost.config, et par défaut la liste est
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
Si vous appelez directement le service Web, la réponse XML a un type de contenu text/xml
, qui est compressé. Lorsqu'elle est appelée par AJAX, la réponse JSON a un type de contenu application/json
, elle n'est donc pas compressée. L'ajout de ce qui suit à applicationHost.config devrait résoudre ce problème...
<add mimeType="application/json" enabled="true" />
Aucun commentaire:
Enregistrer un commentaire