WCF消息大小

mca*_*s20 14 wcf

有没有办法在邮件发送回客户端之前测试邮件的大小?我想处理服务端的最大邮件大小配额.

sto*_*ran 1

您可以编写一个自定义的MessageEncoder,在服务端使用它,并在其WriteMessage方法中检查编码消息的大小。

遵循本指南并以如下方式重写方法:

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));
}
Run Code Online (Sandbox Code Playgroud)