MessageEncoder.WriteMessage Método

Definição

Quando substituído em uma classe derivada, grava uma mensagem em um fluxo ou buffer especificado.

Sobrecargas

Nome Description
WriteMessage(Message, Stream)

Quando substituído em uma classe derivada, grava uma mensagem em um fluxo especificado.

WriteMessage(Message, Int32, BufferManager)

Grava uma mensagem menor que um tamanho especificado em um buffer de matriz de bytes.

WriteMessage(Message, Int32, BufferManager, Int32)

Quando substituído em uma classe derivada, grava uma mensagem de menor que um tamanho especificado em um buffer de matriz de bytes no deslocamento especificado.

WriteMessage(Message, Stream)

Quando substituído em uma classe derivada, grava uma mensagem em um fluxo especificado.

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 para gravar no stream.

stream
Stream

O Stream objeto no qual o message objeto é gravado.

Exemplos

O código a seguir mostra como implementar o 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();
}

Aplica-se a

WriteMessage(Message, Int32, BufferManager)

Grava uma mensagem menor que um tamanho especificado em um buffer 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

A Message gravação no buffer de mensagens.

maxMessageSize
Int32

O tamanho máximo da mensagem que pode ser gravado.

bufferManager
BufferManager

O BufferManager que gerencia o buffer no qual a mensagem é gravada.

Retornos

Um ArraySegment<T> tipo byte que fornece o buffer para o qual a mensagem é serializada.

Comentários

Esse método chama o método WriteMessage(Message, Int32, BufferManager, Int32) abstrato com messageOffset = 0.

Aplica-se a

WriteMessage(Message, Int32, BufferManager, Int32)

Quando substituído em uma classe derivada, grava uma mensagem de menor que um tamanho especificado em um buffer de matriz de bytes no deslocamento 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

A Message gravação no buffer de mensagens.

maxMessageSize
Int32

O tamanho máximo da mensagem que pode ser gravado.

bufferManager
BufferManager

O BufferManager que gerencia o buffer no qual a mensagem é gravada.

messageOffset
Int32

O deslocamento do segmento que começa desde o início da matriz de bytes que fornece o buffer.

Retornos

Um ArraySegment<T> tipo byte que fornece o buffer para o qual a mensagem é serializada.

Exemplos

O código a seguir mostra como implementar o 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;
}

Comentários

Esse método é chamado por WriteMessage(Message, Int32, BufferManager, Int32).

Aplica-se a