如何在编码器级别确定WCF消息大小

时间:2010-08-16 17:08:59

标签: wcf compression gzip message encoder

我正在构建一个压缩WCF响应的自定义编码器。它基于Microsoft的WCF示例中的Gzip编码器和此博客文章:

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

我已经完成了所有工作,但现在我只想在回复超出一定大小时应用压缩,但我不确定如何从编码器级别检索实际消息的总大小。

我需要在EncoderFactory的WriteMessage(...)方法中获取消息大小,因此我知道是否压缩消息)和DispatchMessageInspector中的BeforeSendReply(...)方法以便我可以将“gzip”ContentEncoding标头添加到响应中。请求总是很小而且没有压缩,所以我不需要担心。

任何帮助表示感谢。

乔恩。

2 个答案:

答案 0 :(得分:3)

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

您可能会发现有用的几种资源:

答案 1 :(得分:0)

您可以尝试根据reply.ToString.Length()message.ToString.Length()

进行计算