5

WCF 応答を圧縮するカスタム エンコーダーを構築しています。これは、Microsoft の WCF サンプルと次のブログ投稿の Gzip エンコーダーに基づいています。

http://frenk.wordpress.com/2009/12/04/gzip-compression-wcfsilverlight/

私はそれをすべて機能させましたが、返信が特定のサイズを超えている場合にのみ圧縮を適用したいと思いますが、エンコーダーレベルから実際のメッセージの合計サイズを取得する方法がわかりません.

EncoderFactory の WriteMessage(...) メソッドの両方でメッセージ サイズを取得する必要があるため、メッセージを圧縮するかどうかがわかります) と、DispatchMessageInspector の BeforeSendReply(...) メソッドを追加できるようにします。 "gzip" ContentEncoding ヘッダーをレスポンスに追加します。リクエストは常に小さく、圧縮されていないため、心配する必要はありません。

どんな助けでも感謝します。

ジョン。

4

2 に答える 2

3

これを2段階で行うと思います。まず、メッセージを通常の形式にエンコードするカスタム MessageEncoder を作成しますbyte[]。エンコードされたバイト配列を取得したら (これは、Xml、Json、バイナリなど、任意のメッセージ エンコード形式にすることができます)、バイト配列のサイズを調べて、別の圧縮されたバイト配列を作成するかどうかを判断できます。

役立つリソースがいくつかあります。

于 2010-10-14T18:03:02.240 に答える
0

reply.ToString.Length()とに基づいて計算してみることができますmessage.ToString.Length()

于 2010-08-16T22:03:02.150 に答える