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

我想你会分两个阶段来做这件事。首先,编写一个自定义 MessageEncoder ,将消息编码为byte[]正常的。一旦你有了编码的字节数组(这可以是任何消息编码格式...... Xml、Json、二进制等),你可以检查字节数组的大小并确定是否要创建另一个压缩字节数组。

您可能会发现一些有用的资源:

于 2010-10-14T18:03:02.240 回答
0

您可以尝试根据reply.ToString.Length()和计算它message.ToString.Length()

于 2010-08-16T22:03:02.150 回答