Partager via


MessageEncoder.WriteMessage Méthode

Définition

En cas de substitution dans une classe dérivée, écrit un message dans un flux de données ou une mémoire tampon spécifié.

Surcharges

WriteMessage(Message, Stream)

En cas de substitution dans une classe dérivée, écrit un message dans un flux de données spécifié.

WriteMessage(Message, Int32, BufferManager)

Écrit un message dont la taille est inférieure à celle spécifiée dans une mémoire tampon de tableau d'octets.

WriteMessage(Message, Int32, BufferManager, Int32)

En cas de substitution dans une classe dérivée, écrit un message dont la taille est inférieure à celle spécifiée dans une mémoire tampon de tableau d'octets à l'offset spécifié.

WriteMessage(Message, Stream)

Source:
MessageEncoder.cs
Source:
MessageEncoder.cs
Source:
MessageEncoder.cs

En cas de substitution dans une classe dérivée, écrit un message dans un flux de données spécifié.

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)

Paramètres

message
Message

Message à écrire dans stream.

stream
Stream

Objet Stream dans lequel est écrit message.

Exemples

Le code suivant illustre l'implémentation de la méthode WriteMessage(Message, Stream).

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

S’applique à

WriteMessage(Message, Int32, BufferManager)

Source:
MessageEncoder.cs
Source:
MessageEncoder.cs
Source:
MessageEncoder.cs

Écrit un message dont la taille est inférieure à celle spécifiée dans une mémoire tampon de tableau d'octets.

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)

Paramètres

message
Message

Message à écrire dans la mémoire tampon des messages.

maxMessageSize
Int32

Taille de message maximale qui peut être écrite.

bufferManager
BufferManager

BufferManager qui gère la mémoire tampon dans laquelle le message est écrit.

Retours

ArraySegment<T> de type byte qui fournit la mémoire tampon dans laquelle le message est sérialisé.

Remarques

Cette méthode appelle la méthode abstraite WriteMessage(Message, Int32, BufferManager, Int32) avec messageOffset = 0.

S’applique à

WriteMessage(Message, Int32, BufferManager, Int32)

Source:
MessageEncoder.cs
Source:
MessageEncoder.cs
Source:
MessageEncoder.cs

En cas de substitution dans une classe dérivée, écrit un message dont la taille est inférieure à celle spécifiée dans une mémoire tampon de tableau d'octets à l'offset spécifié.

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)

Paramètres

message
Message

Message à écrire dans la mémoire tampon des messages.

maxMessageSize
Int32

Taille de message maximale qui peut être écrite.

bufferManager
BufferManager

BufferManager qui gère la mémoire tampon dans laquelle le message est écrit.

messageOffset
Int32

Offset du segment qui commence au début du tableau d'octets fournissant la mémoire tampon.

Retours

ArraySegment<T> de type byte qui fournit la mémoire tampon dans laquelle le message est sérialisé.

Exemples

Le code suivant illustre l'implémentation de la méthode WriteMessage(Message, Int32, BufferManager, Int32).

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

Remarques

Cette méthode est appelée par WriteMessage(Message, Int32, BufferManager, Int32).

S’applique à