MessageEncoder.WriteMessage Metodo

Definizione

Quando sottoposto a override in una classe derivata, scrive un messaggio in un flusso o un buffer specificato.

Overload

Nome Descrizione
WriteMessage(Message, Stream)

Quando sottoposto a override in una classe derivata, scrive un messaggio in un flusso specificato.

WriteMessage(Message, Int32, BufferManager)

Scrive un messaggio minore di una dimensione specificata in un buffer di matrice di byte.

WriteMessage(Message, Int32, BufferManager, Int32)

Quando sottoposto a override in una classe derivata, scrive un messaggio minore di una dimensione specificata in un buffer di matrice di byte in corrispondenza dell'offset specificato.

WriteMessage(Message, Stream)

Quando sottoposto a override in una classe derivata, scrive un messaggio in un flusso specificato.

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)

Parametri

message
Message

Oggetto Message da scrivere nell'oggetto stream.

stream
Stream

Oggetto Stream in cui viene scritto l'oggetto message .

Esempio

Il codice seguente illustra come implementare il WriteMessage(Message, Stream) metodo .

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

Si applica a

WriteMessage(Message, Int32, BufferManager)

Scrive un messaggio minore di una dimensione specificata in un buffer di matrice di byte.

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)

Parametri

message
Message

Oggetto Message da scrivere nel buffer dei messaggi.

maxMessageSize
Int32

Dimensione massima del messaggio che può essere scritta.

bufferManager
BufferManager

Oggetto BufferManager che gestisce il buffer in cui viene scritto il messaggio.

Valori restituiti

Oggetto ArraySegment<T> di tipo byte che fornisce il buffer a cui viene serializzato il messaggio.

Commenti

Questo metodo chiama il metodo WriteMessage(Message, Int32, BufferManager, Int32) astratto con messageOffset = 0.

Si applica a

WriteMessage(Message, Int32, BufferManager, Int32)

Quando sottoposto a override in una classe derivata, scrive un messaggio minore di una dimensione specificata in un buffer di matrice di byte in corrispondenza dell'offset specificato.

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)

Parametri

message
Message

Oggetto Message da scrivere nel buffer dei messaggi.

maxMessageSize
Int32

Dimensione massima del messaggio che può essere scritta.

bufferManager
BufferManager

Oggetto BufferManager che gestisce il buffer in cui viene scritto il messaggio.

messageOffset
Int32

Offset del segmento che inizia dall'inizio della matrice di byte che fornisce il buffer.

Valori restituiti

Oggetto ArraySegment<T> di tipo byte che fornisce il buffer a cui viene serializzato il messaggio.

Esempio

Il codice seguente illustra come implementare il WriteMessage(Message, Int32, BufferManager, Int32) metodo .

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

Commenti

Questo metodo viene chiamato da WriteMessage(Message, Int32, BufferManager, Int32).

Si applica a