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

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

.NET 8 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, 8
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
UWP 10.0

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<byte> WriteMessage (System.ServiceModel.Channels.Message message, int maxMessageSize, System.ServiceModel.Channels.BufferManager bufferManager);

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

.NET 8 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, 8
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
UWP 10.0

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<byte> WriteMessage (System.ServiceModel.Channels.Message message, int maxMessageSize, System.ServiceModel.Channels.BufferManager bufferManager, int messageOffset);

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

.NET 8 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, 8
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
UWP 10.0