MessageEncoder.WriteMessage Método

Definição

Quando substituído em uma classe derivada, grava uma mensagem em um fluxo ou buffer especificado.When overridden in a derived class, writes a message to a specified stream or buffer.

Sobrecargas

WriteMessage(Message, Stream)

Quando substituído em uma classe derivada, grava uma mensagem a um fluxo especificado.When overridden in a derived class, writes a message to a specified stream.

WriteMessage(Message, Int32, BufferManager)

Grava uma mensagem menor do que um tamanho especificado em um buffer de matriz de bytes.Writes a message less than a specified size to a byte array buffer.

WriteMessage(Message, Int32, BufferManager, Int32)

Quando substituído em uma classe derivada, grava uma mensagem de um tamanho menor que o especificado em um buffer de matriz de bytes no deslocamento especificado.When overridden in a derived class, writes a message of less than a specified size to a byte array buffer at the specified offset.

WriteMessage(Message, Stream)

Quando substituído em uma classe derivada, grava uma mensagem a um fluxo especificado.When overridden in a derived class, writes a message to a specified stream.

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

O Message a gravar no stream.The Message to write to the stream.

stream
Stream

O objeto Stream no qual o message é gravado.The Stream object to which the message is written.

Exemplos

O código a seguir mostra como implementar o WriteMessage(Message, Stream) método.The following code shows how to implement the WriteMessage(Message, Stream) method.

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

Aplica-se a

WriteMessage(Message, Int32, BufferManager)

Grava uma mensagem menor do que um tamanho especificado em um buffer de matriz de bytes.Writes a message less than a specified size to a byte array buffer.

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

O Message para gravar no buffer de mensagem.The Message to write to the message buffer.

maxMessageSize
Int32

O tamanho máximo de mensagem que pode ser gravado.The maximum message size that can be written.

bufferManager
BufferManager

O BufferManager que gerencia o buffer para o qual a mensagem é gravada.The BufferManager that manages the buffer to which the message is written.

Retornos

ArraySegment<Byte>

Um ArraySegment<T> do tipo byte que fornece o buffer para o qual a mensagem é serializada.A ArraySegment<T> of type byte that provides the buffer to which the message is serialized.

Comentários

Esse método chama o método abstract WriteMessage(Message, Int32, BufferManager, Int32) com messageOffset = 0.This method calls the abstract method WriteMessage(Message, Int32, BufferManager, Int32) with messageOffset = 0.

Aplica-se a

WriteMessage(Message, Int32, BufferManager, Int32)

Quando substituído em uma classe derivada, grava uma mensagem de um tamanho menor que o especificado em um buffer de matriz de bytes no deslocamento especificado.When overridden in a derived class, writes a message of less than a specified size to a byte array buffer at the specified offset.

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

O Message para gravar no buffer de mensagem.The Message to write to the message buffer.

maxMessageSize
Int32

O tamanho máximo de mensagem que pode ser gravado.The maximum message size that can be written.

bufferManager
BufferManager

O BufferManager que gerencia o buffer para o qual a mensagem é gravada.The BufferManager that manages the buffer to which the message is written.

messageOffset
Int32

O deslocamento do segmento que começa do início da matriz de bytes que fornece o buffer.The offset of the segment that begins from the start of the byte array that provides the buffer.

Retornos

ArraySegment<Byte>

Um ArraySegment<T> do tipo byte que fornece o buffer para o qual a mensagem é serializada.A ArraySegment<T> of type byte that provides the buffer to which the message is serialized.

Exemplos

O código a seguir mostra como implementar o WriteMessage(Message, Int32, BufferManager, Int32) método.The following code shows how to implement the WriteMessage(Message, Int32, BufferManager, Int32) method.

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;
}

Comentários

Este método é chamado por WriteMessage(Message, Int32, BufferManager, Int32).This method is called by WriteMessage(Message, Int32, BufferManager, Int32).

Aplica-se a