Ich habe einen .NET 3.5 Webservice auf IIS7.5 gehostet.GZip-Komprimierung in WCF WebService
Ich habe eine Client-Anwendung, die sich mit diesem Webservice verbindet.
I (in Client-Anwendung) der httpWebRequest.Create Methode geändert automaticDecompression für GZIP hinzufügen, aber es funktioniert nicht
WebRequest IWebRequestCreate.Create(Uri uri)
{
HttpWebRequest httpWebRequest =
Activator.CreateInstance(
typeof(HttpWebRequest),
BindingFlags.CreateInstance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
null,
new object[] { uri, null },
null) as HttpWebRequest;
if (httpWebRequest == null)
return null;
httpWebRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
httpWebRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
return httpWebRequest;
}
Auf diese Weise wird die Anfrage korrekt gesendet wird, wird die Antwort in gzip kodiert (ich sehe es von Fiddler), aber eine Ausnahme auftritt:
Response is not wellformed XML
(ich denke, der Client entschlüsselt die Antwort nicht)
Wenn ich diese Zeile entfernen, wie in MSDN-Dokumentation
httpWebRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
Die Antwort ist nicht GZIP kodiert (und in der Anfrage gibt es keine Accept-Encoding-Header)
Die IIS eine Möglichkeit Kompression Unterstützung hinzufügen zu einem gehosteten Dienst haben sollte. Es gibt keine Möglichkeit, die GZip-Komprimierung durch benutzerdefiniertes Codieren zu implementieren. –
Yeh .. ok .. und wie kann ich GZip-Komprimierung in WCF-Webservices verwenden? Weil ich viele Textdaten übertragen muss. – AndreaCi
Ich ging durch diesen ganzen schmerzhaften Prozess ungefähr 2-3 Jahre zurück. Ich habe versucht, die Lösung zu finden, die ich gefunden habe, aber bisher kein Glück. +1 in der Zwischenzeit. – leppie