2011-01-13 3 views
1

Wie komprimiere ich die Ausgabedaten von einem Webdienst (Webmethode). Die Ausgabe ist XmlDocument-Typ.ASP.NET WebService Antwortkomprimierung

Hier ist der Code.

[WebMethod] 
public XmlDocument GetPersonalInfo(int CustomerID) 
{ 
    XmlDocument doc = new XmlDocument(); 
    doc.LoadXml(new CustomersXML().GetPersonalInfo(CustomerID)); 
    return doc; 
} 

Wie gzip ich diese Antwort. Beachten Sie, dass es sich nicht um eine Seite (HTTP-Aufruf) handelt, sondern um einen Webdienst, der von einem Flex-Client aufgerufen wird.

Dank

Antwort

0

ich für Code keine Zeit zu schauen, aber es gibt einen Namensraum System.IO.Compression, die für mehrere Klassen sowohl gzip und Deflations-basierten Kompressionsschemata. Gzip ist wahrscheinlich eine sicherere Wette für die sprachübergreifende Kommunikation, da ich nicht sicher bin, wie weitverbreitet die Deflationskompression ist.

Sie sollten jedoch keine Probleme in der Kommunikation haben, solange es einen Header mit dem SOAP-Paket gibt, der dem Client-Server mitteilt, den Stream zu dekomprimieren.

Hinweis: Überprüfen Sie die Servereinstellungen, bevor Sie dies tun, obwohl einige Hosts Gzip standardmäßig aktiviert haben und Sie dies nicht zweimal tun möchten.

0

Das hat nichts mit .NET zu tun.

GZIP ist eine HTTP-Funktion im Web-Server - sofern der Client dies unterstützt, der den Server im Allgemeinen benachrichtigt, indem er GZIP in den ACCEPT-Headern sendet, wenn er die Anfrage sendet.

Sie müssen es in IIS einrichten. Je nach Version kann es anders sein. In IIS 7 ist es sehr einfach, nur eine Flagge zu setzen. Siehe here.

+2

gzip wurde nur als Standard in IIS7 standardmäßig eingeführt und es ist nur als ein Modul in Apache verfügbar, also würde ich nicht sagen, dass es nichts mit .NET zu tun hat, da dies bedeutet, dass dies nicht programmgesteuert aufgerufen werden kann. Sie können Gziped-Streams definitiv direkt aus .NET ausgeben. Ob seine Vorsicht eine völlig getrennte Frage ist. –

1

This answer Referenzen eine ancient article zu erklären, wie dies programmgesteuert mit SharpZipLib zu implementieren.

Another answer demonstriert die Verwendung der System.IO.Compressionclasses, die für SharpZipLib ersetzt werden könnte.

Rick Strahl zusammen an article Überprüfung der potenziellen Probleme bei der Implementierung von Komprimierung, die in den oben genannten Beispielen offenbar nicht angesprochen werden. Er verweist auch auf an article, die weitere Details zur Verwendung der integrierten IIS7-Komprimierung bereitstellt.

1

zu Ihrem iis gehen oder was auch immer Konfigurationsdatei, und die folgende Zeile in der entsprechenden Stelle hinzu:

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

ich das gleiche Problem gehabt habe - mein IIS konnte jede HTTP-Antwort auf gzip, mit Ausnahme von JSON-Antworten (wo eine Gzip-Komprimierung am meisten auf meiner App benötigt wurde).

Hoffnung, die

-Update hilft: die Anwendung Host-Konfigurationsdatei sollten Sie hier: % windir% \ System32 \ inetsrv \ config