MessageEncoder.WriteMessage Método

Definición

Cuando se invalida en una clase derivada, escribe un mensaje en un flujo o búfer especificados.

Sobrecargas

Nombre Description
WriteMessage(Message, Stream)

Cuando se invalida en una clase derivada, escribe un mensaje en una secuencia especificada.

WriteMessage(Message, Int32, BufferManager)

Escribe un mensaje menor que un tamaño especificado en un búfer de matriz de bytes.

WriteMessage(Message, Int32, BufferManager, Int32)

Cuando se reemplaza en una clase derivada, escribe un mensaje de menos de un tamaño especificado en un búfer de matriz de bytes en el desplazamiento especificado.

WriteMessage(Message, Stream)

Cuando se invalida en una clase derivada, escribe un mensaje en una secuencia especificada.

public:
 abstract void WriteMessage(System::ServiceModel::Channels::Message ^ message, System::IO::Stream ^ stream);
public abstract void WriteMessage(System.ServiceModel.Channels.Message message, System.IO.Stream stream);
abstract member WriteMessage : System.ServiceModel.Channels.Message * System.IO.Stream -> unit
Public MustOverride Sub WriteMessage (message As Message, stream As Stream)

Parámetros

message
Message

que Message se va a escribir en .stream

stream
Stream

Objeto Stream en el que se escribe .message

Ejemplos

En el código siguiente se muestra cómo implementar el WriteMessage(Message, Stream) método .

public override void WriteMessage(Message message, Stream stream)
{
    XmlWriter writer = XmlWriter.Create(stream, this.writerSettings);
    message.WriteMessage(writer);
    writer.Close();
}

Se aplica a

WriteMessage(Message, Int32, BufferManager)

Escribe un mensaje menor que un tamaño especificado en un búfer de matriz de bytes.

public:
 ArraySegment<System::Byte> WriteMessage(System::ServiceModel::Channels::Message ^ message, int maxMessageSize, System::ServiceModel::Channels::BufferManager ^ bufferManager);
public ArraySegment<byte> WriteMessage(System.ServiceModel.Channels.Message message, int maxMessageSize, System.ServiceModel.Channels.BufferManager bufferManager);
member this.WriteMessage : System.ServiceModel.Channels.Message * int * System.ServiceModel.Channels.BufferManager -> ArraySegment<byte>
Public Function WriteMessage (message As Message, maxMessageSize As Integer, bufferManager As BufferManager) As ArraySegment(Of Byte)

Parámetros

message
Message

que Message se va a escribir en el búfer de mensajes.

maxMessageSize
Int32

Tamaño máximo del mensaje que se puede escribir.

bufferManager
BufferManager

BufferManager que administra el búfer en el que se escribe el mensaje.

Devoluciones

ArraySegment<T> de tipo byte que proporciona el búfer al que se serializa el mensaje.

Comentarios

Este método llama al método WriteMessage(Message, Int32, BufferManager, Int32) abstracto con messageOffset = 0.

Se aplica a

WriteMessage(Message, Int32, BufferManager, Int32)

Cuando se reemplaza en una clase derivada, escribe un mensaje de menos de un tamaño especificado en un búfer de matriz de bytes en el desplazamiento especificado.

public:
 abstract ArraySegment<System::Byte> WriteMessage(System::ServiceModel::Channels::Message ^ message, int maxMessageSize, System::ServiceModel::Channels::BufferManager ^ bufferManager, int messageOffset);
public abstract ArraySegment<byte> WriteMessage(System.ServiceModel.Channels.Message message, int maxMessageSize, System.ServiceModel.Channels.BufferManager bufferManager, int messageOffset);
abstract member WriteMessage : System.ServiceModel.Channels.Message * int * System.ServiceModel.Channels.BufferManager * int -> ArraySegment<byte>
Public MustOverride Function WriteMessage (message As Message, maxMessageSize As Integer, bufferManager As BufferManager, messageOffset As Integer) As ArraySegment(Of Byte)

Parámetros

message
Message

que Message se va a escribir en el búfer de mensajes.

maxMessageSize
Int32

Tamaño máximo del mensaje que se puede escribir.

bufferManager
BufferManager

BufferManager que administra el búfer en el que se escribe el mensaje.

messageOffset
Int32

Desplazamiento del segmento que comienza desde el inicio de la matriz de bytes que proporciona el búfer.

Devoluciones

ArraySegment<T> de tipo byte que proporciona el búfer al que se serializa el mensaje.

Ejemplos

En el código siguiente se muestra cómo implementar el WriteMessage(Message, Int32, BufferManager, Int32) método .

public override ArraySegment<byte> WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset)
{
    MemoryStream stream = new MemoryStream();
    XmlWriter writer = XmlWriter.Create(stream, this.writerSettings);
    message.WriteMessage(writer);
    writer.Close();

    byte[] messageBytes = stream.GetBuffer();
    int messageLength = (int)stream.Position;
    stream.Close();

    int totalLength = messageLength + messageOffset;
    byte[] totalBytes = bufferManager.TakeBuffer(totalLength);
    Array.Copy(messageBytes, 0, totalBytes, messageOffset, messageLength);

    ArraySegment<byte> byteArray = new ArraySegment<byte>(totalBytes, messageOffset, messageLength);
    return byteArray;
}

Comentarios

Este método lo llama WriteMessage(Message, Int32, BufferManager, Int32).

Se aplica a