WCF消息大小

14

有没有办法在将消息发送回客户端之前测试其大小?我想在服务端处理最大消息大小限制。


2
你能提供更多关于你正在尝试做什么的信息吗?一个消息检查器可能足够了,但是如果不知道使用哪个消息编码器,你就不会知道确切的大小。此外,这将非常消耗内存和CPU,因为你需要分配大量内存并对消息进行两次序列化。 - MattC
1个回答

1
你可以编写自定义的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));
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接