MessageEncoder.WriteMessage Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
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
- 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
- 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).