MessageEncoder.WriteMessage Método

Definição

Quando sobrescrito numa classe derivada, escreve uma mensagem num fluxo ou buffer especificado.

Sobrecargas

Name Description
WriteMessage(Message, Stream)

Quando sobrescrito numa classe derivada, escreve uma mensagem num fluxo especificado.

WriteMessage(Message, Int32, BufferManager)

Escreve uma mensagem inferior a um tamanho especificado num buffer de array de bytes.

WriteMessage(Message, Int32, BufferManager, Int32)

Quando sobrescrito numa classe derivada, escreve uma mensagem de tamanho inferior a um especificado num buffer de array de bytes no deslocamento especificado.

WriteMessage(Message, Stream)

Quando sobrescrito numa classe derivada, escreve uma mensagem num 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 escrever no stream.

stream
Stream

O Stream objeto para o qual o message está escrito.

Exemplos

O código seguinte 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)

Escreve uma mensagem inferior a um tamanho especificado num buffer de array 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 escrever no buffer de mensagens.

maxMessageSize
Int32

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

bufferManager
BufferManager

O BufferManager que gere o buffer para onde a mensagem é escrita.

Devoluções

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

Observações

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

Aplica-se a

WriteMessage(Message, Int32, BufferManager, Int32)

Quando sobrescrito numa classe derivada, escreve uma mensagem de tamanho inferior a um especificado num buffer de array 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 escrever no buffer de mensagens.

maxMessageSize
Int32

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

bufferManager
BufferManager

O BufferManager que gere o buffer para onde a mensagem é escrita.

messageOffset
Int32

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

Devoluções

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

Exemplos

O código seguinte 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;
}

Observações

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

Aplica-se a