GZip-Komprimierung im WCF-WebService

9

Ich habe einen .NET 3.5 Webservice auf IIS7.5 gehostet.

Ich habe eine Client-Anwendung, die sich mit diesem Webservice verbindet.

Ich habe (in der Client-Anwendung) die httpWebRequest.Create-Methode geändert, um automatischDecompression für GZip hinzuzufügen, aber es funktioniert nicht

%Vor%

Auf diese Weise wird die Anfrage korrekt gesendet, die Antwort ist in gzip codiert (ich sehe es von Fiddler), aber eine Ausnahme tritt auf:

%Vor%

(Ich denke, der Client entschlüsselt die Antwort nicht)

Wenn ich diese Zeile lösche, wie in der MSDN-Dokumentation

%Vor%

Die Antwort ist nicht GZip-codiert (und in der Anfrage gibt es keinen ACCEPT-ENCODING-Header)

    
AndreaCi 12.04.2012, 14:31
quelle

3 Antworten

0

Gelöst !! Der Code in der Frage war ausreichend für Service-Referenzen. Wenn Sie Webverweise verwenden, fügen Sie auch die Zeile

hinzu %Vor%     
AndreaCi 09.10.2013, 09:40
quelle
4

Ich habe dies getan, um DataTable-Objekte mit WCF mit DataContract zu übertragen. Sie müssen den DataContract wie folgt anlegen:

%Vor%

Dann habe ich einen Binär-Konverter erstellt, der automatisch jedes Objekt in ein Byte-Array konvertiert, das ich dann mit GZip komprimieren kann.

%Vor%

Dump dies in Ihrem Projekt und rufen Sie wie folgt in Ihrem Service zu komprimieren:

%Vor%

Dann nennen Sie es auf Ihrer Client-Seite, um es wieder in ein Objekt umzuwandeln:

%Vor%     
MrWuf 18.04.2012 13:28
quelle
0

Ein möglicher Weg wäre, protobuf zu verwenden, um eine Komprimierung zu erreichen mit dem WCF-Dienst, wenn Sie Client und Server steuern.

    
Petar Vučetin 13.04.2012 05:54
quelle

Tags und Links