20

WCF 4.5 は、サード パーティのライブラリや手書きの拡張機能を使用せずに GZIP をサポートします。TCP Binding 経由で動作するようになりましたが、HTTP Binding 経由で動作させる方法が見つかりません。my 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 プロトコルで機能します。クライアントが圧縮の使用を指定したが、サービスがそれをサポートしていない場合、プロトコルの不一致を示すプロトコル例外がスローされます。詳細については、メッセージ エンコーダーの選択を参照してください。

4

1 に答える 1

23

リクエストに応じて、コメントを回答としてコピーしました:

"このプロパティは binaryMessageEncodingBindingElement でのみ公開されるため、この機能を使用するには、次のようなカスタム バインディングを作成する必要があります。

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

および圧縮されたメッセージを受信するため、クライアントとサービスの両方の binaryMessageEncoding 要素で compressionFormat プロパティを構成する必要があります。「クライアントとサービスの両方が送信に同意する必要があります

于 2013-04-07T14:57:20.623 に答える