Partilhar via


MessageEncoder.WriteMessage Método

Definição

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

Sobrecargas

WriteMessage(Message, Stream)

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

WriteMessage(Message, Int32, BufferManager)

Grava uma mensagem menor do 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 um tamanho menor que o especificado em um buffer de matriz de bytes no deslocamento especificado.

WriteMessage(Message, Stream)

Origem:
MessageEncoder.cs
Origem:
MessageEncoder.cs
Origem:
MessageEncoder.cs

Quando substituído em uma classe derivada, grava uma mensagem a 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 a gravar no stream.

stream
Stream

O objeto Stream no qual o message é 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)

Origem:
MessageEncoder.cs
Origem:
MessageEncoder.cs
Origem:
MessageEncoder.cs

Grava uma mensagem menor do 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

O Message para gravar no buffer de mensagem.

maxMessageSize
Int32

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

bufferManager
BufferManager

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

Retornos

Um ArraySegment<T> do 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)

Origem:
MessageEncoder.cs
Origem:
MessageEncoder.cs
Origem:
MessageEncoder.cs

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.

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.

maxMessageSize
Int32

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

bufferManager
BufferManager

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

messageOffset
Int32

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

Retornos

Um ArraySegment<T> do 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

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

Aplica-se a