2011-02-24 12 views
14

¿Hay alguna manera de probar el tamaño de un mensaje antes de enviarlo al cliente? Me gustaría manejar la cuota máxima de tamaño de mensaje en el lado del servicio.WCF Tamaño del mensaje

+2

¿Puede dar más información sobre lo que está tratando de hacer? Un inspector de mensajes podría ser suficiente pero, sin saber qué codificador de mensajes se está utilizando, no sabrá el tamaño exacto. También esto sería muy costoso en la memoria y la CPU ya que asignaría mucha memoria y serializaría el mensaje dos veces. – MattC

Respuesta

1

Puede escribir un MessageEncoder personalizado, usarlo en el lado del servicio y verificar el tamaño de un mensaje codificado dentro de los métodos WriteMessage.

Siga this guide y anular los métodos de tal manera:

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)); 
} 
Cuestiones relacionadas