14
在将消息发送回客户端之前,有任何方法可以测试消息的大小吗?我想处理事物服务端的最大消息大小配额。WCF消息大小
在将消息发送回客户端之前,有任何方法可以测试消息的大小吗?我想处理事物服务端的最大消息大小配额。WCF消息大小
您可以编写自定义MessageEncoder
,在服务端使用它,并在其WriteMessage
方法中检查编码的消息大小。
按照this guide,并覆盖以这样的方式方法:
public override ArraySegment<byte> WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset)
{
var result = this.text.WriteMessage(message, maxMessageSize, bufferManager, messageOffset);
// Encoded message check logic.
Console.WriteLine("Message sent. Length=" + result.Count);
return result;
}
public override void WriteMessage(Message message, Stream stream)
{
var position = stream.Position;
this.text.WriteMessage(message, stream);
// Encoded message check logic.
Console.WriteLine("Message sent. Length=" + (stream.Position - position));
}
你能提供什么你正在尝试做的更多信息?一个消息检查器可能就足够了,但不知道正在使用哪个消息编码器,你将不知道确切的大小。在内存和CPU中,这也会非常昂贵,因为您会分配大量内存并将消息序列化两次。 – MattC 2015-10-08 20:16:38