2008-10-28 9 views
12

Ich habe die Komprimierung in IIS7 aktiviert und es funktioniert wie erwartet für alle Antworten außer für die von ASP.NET AJAX konstruierten Antworten. Ich habe einen Webservice, der dem Kunden Daten zur Verfügung stellt. Wenn der Webdienst direkt aufgerufen wird, wird er ordnungsgemäß komprimiert. Wenn es jedoch über ASP.NET AJAX aufgerufen wird, ist die JSON-Antwort nicht komprimiert.Wie kann ich ASP.NET AJAX dazu bringen, seine JSON-Antwort mit GZip-Komprimierung zu senden?

Wie bekomme ich ASP.NET AJAX, um seine JSON-Antwort mit GZip-Komprimierung zu senden?

Antwort

1

Welchen Browser benutzen Sie? Es gibt einen Fehler in IE 6, der Fehler bei der Komprimierung verursacht. So stellt ASP.NET AJAX off Kompression IE 6 Browser:

http://weblogs.asp.net/scottgu/archive/2005/06/28/416185.aspx

Auch haben aktivieren Sie die Komprimierung für ASMX-Dateien?

+0

Wie können wir die Komprimierung für ASMX-Dateien aktivieren? Irgendwelche Referenzen? – Lijo

0

Zuletzt habe ich gecheckt, das Gzipping war etwas, das IIS funktioniert (wenn Setup korrekt) - und natürlich, wenn der Browser

5

IIS7 nutzt das Content-Encoding zu entscheiden, die erforderlichen Header sendet, ob die Antwort zu komprimieren (unter der Annahme, natürlich, dass der Browser gzip akzeptiert). Sie sind in applicationHost.config und standardmäßig die Liste ist

<dynamicTypes> 
    <add mimeType="text/*" enabled="true" /> 
    <add mimeType="message/*" enabled="true" /> 
    <add mimeType="application/x-javascript" enabled="true" /> 
    <add mimeType="*/*" enabled="false" /> 
</dynamicTypes> 

Wenn Sie den Web-Service direkt aufrufen, die XML-Antwort hat einen Inhaltstyp von text/xml, die komprimiert wird. Wenn die JSON-Antwort von AJAX aufgerufen wird, hat sie einen Inhaltstyp von application/json und ist daher nicht komprimiert. Hinzufügen der folgenden zu applicationHost.config sollte die in Ordnung bringen ...

 <add mimeType="application/json" enabled="true" /> 
+0

Wie können wir es in IIS6 tun? – Lijo

+0

Referenz: http://stackoverflow.com/questions/2515421/how-to-compress-json-with- – Lijo

+0

Und [Anpassen der Dateitypen IIS-Komprimierungen (IIS 6.0)] (http://www.microsoft.com/ technet/prodtechnol/WindowsServer2003/Bibliothek/IIS/5bce429d-c4a7-4f9e-a619-5972497b932a.mspx? mfr = true) – Lijo

0

In der Regel wollen Sie nicht, dies zu tun, wenn Sie nichts dagegen, würden Größenordnung der Menge der Server-Leistung in Ihre Anwendungen zu werfen .. .

auch wird nicht nur Server-CPU, sondern auch Client-CPU ein Problem, wenn Sie dies tun ....

Dies mit dem Schluss, dass Ihre App wird WAY langsamer, wenn Sie alle Ihre Ajax Antworten gzip ... !

+0

Die Clientseite Betonung ist sehr wichtig zu beachten. Achte außerdem darauf, wann du komprimieren musst und wann nicht. Tatsächlich gibt es Zeiten, in denen die Komprimierung das Objekt vor der Dekomprimierung tatsächlich vergrößert. Mit MVC kann es in jeder ASP.NET-App durchgeführt werden. Ich habe eine Annotion für meine Controller-Aktionen erstellt, indem ich eine Klasse erstellt habe, die von ActionFilterAttribute erbt. Innerhalb der Klasse ziehe ich den Accept-Encoding-Header filterContext.HttpContext.Request.Headers ["Accept-Encoding"] und überprüfe, ob deflate oder gzip vorhanden sind. Wenn sie anwesend sind und meine geschäftsspezifischen Bedingungen erfüllen, löse ich oder GZipStream. –

Verwandte Themen