Размер сообщения WCF

Есть ли способ проверить размер сообщения, прежде чем он будет отправлен обратно клиенту? Я бы хотел обработать максимальную квоту размера сообщения на стороне обслуживания.

Ответ 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));
}