MessageEncoder.WriteMessage Método

Definición

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

Sobrecargas

WriteMessage(Message, Stream)

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

WriteMessage(Message, Int32, BufferManager)

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

WriteMessage(Message, Int32, BufferManager, Int32)

Cuando se invalida en una clase derivada, escribe un mensaje menor de un tamaño especificado en un búfer de una matriz de bytes en la posición especificada.

WriteMessage(Message, Stream)

Source:
MessageEncoder.cs
Source:
MessageEncoder.cs
Source:
MessageEncoder.cs

Cuando se invalida en una clase derivada, escribe un mensaje a 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

Message para escribir en stream.

stream
Stream

Objeto Stream donde se escribe message.

Ejemplos

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

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)

Source:
MessageEncoder.cs
Source:
MessageEncoder.cs
Source:
MessageEncoder.cs

Escribe un mensaje menor que un tamaño especificado en un búfer de la 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

Message para escribir en el búfer de mensajes.

maxMessageSize
Int32

Tamaño máximo de los mensajes 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 abstracto WriteMessage(Message, Int32, BufferManager, Int32) con messageOffset = 0.

Se aplica a

WriteMessage(Message, Int32, BufferManager, Int32)

Source:
MessageEncoder.cs
Source:
MessageEncoder.cs
Source:
MessageEncoder.cs

Cuando se invalida en una clase derivada, escribe un mensaje menor de un tamaño especificado en un búfer de una matriz de bytes en la posición especificada.

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

Message para escribir en el búfer de mensajes.

maxMessageSize
Int32

Tamaño máximo de los mensajes que se puede escribir.

bufferManager
BufferManager

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

messageOffset
Int32

Posición del segmento que comienza en 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 método WriteMessage(Message, Int32, BufferManager, Int32).

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

WriteMessage(Message, Int32, BufferManager, Int32) llama a este método.

Se aplica a