2013-03-28 5 views
18

WCF 4.5 unterstützt GZIP ohne Bibliotheken von Drittanbietern oder handschriftliche Erweiterungen. Ich habe es funktioniert über TCP-Bindung, aber finde keine Möglichkeit, es funktioniert über HTTP-Bindung. mein wcf - Service ist selbst in einem Windows-Dienst gehostet.So erhalten Sie die Gzip-Komprimierung in WCF 4.5

Addon: Ich darf nicht IIS verwenden; Ich kann nicht zu einem WCF-Ersatz wechseln.

das funktioniert mit gzip:

binding="customBinding" bindingConfiguration="tcpCompressionBinding" name="tcp" 

und das ist, was zur Zeit i für http:

binding="basicHttpBinding" bindingConfiguration="httpBinding" name="http" 

Die Dokumentation wirklich mir nicht helfen: http://msdn.microsoft.com/en-us/library/dd456789.aspx.

Aber dies nach sollte es funktionieren:

Beginnend mit WCF 4.5 der WCF Binärkodierer Unterstützung für die Komprimierung hinzufügt. Der Komprimierungstyp wird mit der CompressionFormat-Eigenschaft konfiguriert. Sowohl der Client als auch der Dienst müssen die CompressionFormat-Eigenschaft konfigurieren. Die Komprimierung funktioniert für HTTP-, HTTPS- und TCP-Protokolle. Wenn ein Client angibt, die Komprimierung zu verwenden, der Dienst dies jedoch nicht unterstützt, wird eine Protokollausnahme ausgelöst, die auf einen Protokollkonflikt hinweist. Weitere Informationen finden Sie eine Nachricht Encoder

+0

einiger Zeit Zeit hatte ich mit WCF 4.0 das gleiche Problem vor senden – rekire

+1

so denke nicht. Wcf 4.0 kein Build in gzip Unterstützung hatte. Es ist ein 4,5-Funktion. – NickD

+0

Cool. Ich weiß das nicht. – rekire

Antwort

21

Wie pro Antrag Wahl kopiert ich meinen Kommentar als Antwort:

„Da diese Eigenschaft nur auf dem binaryMessageEncodingBindingElement ausgesetzt ist, müssen Sie eine benutzerdefinierte erstellen wie die folgende Bindung dieses Feature zu nutzen:

<customBinding> 
    <binding name="BinaryCompressionBinding"> 
    <binaryMessageEncoding compressionFormat="GZip"/> 
    <httpTransport /> 
    </binding> 
</customBinding> 

und komprimierte Nachrichten empfangen. Daher muss die Eigenschaft compressionFormat für das binaryMessageEncoding-Element unter Client und Dienst konfiguriert sein. „Sowohl der Client als auch der Service müssen stimmen

+0

Alte Post Ich weiß, aber es ist nicht funktioniert g für mich. Irgendeine Idee warum? –

Verwandte Themen