WCF 4.5は、サードパーティのライブラリや手書きの拡張機能なしでGZIPをサポートしています。 TCPバインディングを介して機能しましたが、HTTPバインディングを介して機能させる方法が見つかりません。私のwcf-サービスはWindowsサービスで自己ホストされています。
アドオン:IISの使用は許可されていません。 WCFの交換に切り替えることはできません。
これはgzipで動作します:
binding="customBinding" bindingConfiguration="tcpCompressionBinding" name="tcp"
これは私が現在httpに使用しているものです:
binding="basicHttpBinding" bindingConfiguration="httpBinding" name="http"
ドキュメントは本当に私を助けません: http://msdn.Microsoft.com/en-us/library/dd456789.aspx 。
しかし、これによるとそれはうまくいくはずです:
WCF 4.5以降、WCFバイナリエンコーダーは圧縮のサポートを追加します。圧縮の種類は、CompressionFormatプロパティで構成されます。クライアントとサービスの両方でCompressionFormatプロパティを構成する必要があります。圧縮は、HTTP、HTTPS、およびTCPプロトコルで機能します。クライアントが圧縮の使用を指定しているが、サービスがそれをサポートしていない場合、プロトコルの不一致を示すプロトコル例外がスローされます。詳細については、メッセージエンコーダーの選択
リクエストに従って、コメントを回答としてコピーしました:
「このプロパティはbinaryMessageEncodingBindingElementでのみ公開されるため、この機能を使用するには、次のようなカスタムバインディングを作成する必要があります。
<customBinding>
<binding name="BinaryCompressionBinding">
<binaryMessageEncoding compressionFormat="GZip"/>
<httpTransport />
</binding>
</customBinding>
圧縮されたメッセージを受信するため、クライアントとサービスの両方のbinaryMessageEncoding要素でcompressionFormatプロパティを構成する必要があります。 「クライアントとサービスの両方が送信することに同意する必要があります