Freigeben über


MessageEncoder.WriteMessage Methode

Definition

Schreibt beim Überschreiben in einer abgeleiteten Klasse eine Nachricht in den angegebenen Stream oder Puffer.

Überlädt

WriteMessage(Message, Stream)

Schreibt beim Überschreiben in einer abgeleiteten Klasse eine Nachricht in den angegebenen Stream.

WriteMessage(Message, Int32, BufferManager)

Schreibt eine Nachricht, die kleiner ist als die angegebene Größe, in einen Bytearraypuffer.

WriteMessage(Message, Int32, BufferManager, Int32)

Schreibt beim Überschreiben in einer abgeleiteten Klasse eine Nachricht, die kleiner ist als die angegebene Größe, im angegebenen Offset in einen Bytearraypuffer.

WriteMessage(Message, Stream)

Quelle:
MessageEncoder.cs
Quelle:
MessageEncoder.cs
Quelle:
MessageEncoder.cs

Schreibt beim Überschreiben in einer abgeleiteten Klasse eine Nachricht in den angegebenen Stream.

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)

Parameter

message
Message

Die Message, die in den stream geschrieben werden soll.

stream
Stream

Das Stream-Objekt, in das die message geschrieben wird.

Beispiele

Im folgenden Codebeispiel wird die Implementierung der WriteMessage(Message, Stream)-Methode veranschaulicht.

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

Gilt für:

WriteMessage(Message, Int32, BufferManager)

Quelle:
MessageEncoder.cs
Quelle:
MessageEncoder.cs
Quelle:
MessageEncoder.cs

Schreibt eine Nachricht, die kleiner ist als die angegebene Größe, in einen Bytearraypuffer.

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)

Parameter

message
Message

Die in den Nachrichtenpuffer zu schreibende Message.

maxMessageSize
Int32

Die maximal zulässige Nachrichtengröße, die geschrieben werden kann.

bufferManager
BufferManager

Der BufferManager, der den Puffer verwaltet, in den die Nachricht geschrieben wird.

Gibt zurück

Ein ArraySegment<T> vom Typ byte, das den Puffer bereitstellt, in dem die Nachricht serialisiert wird.

Hinweise

Diese Methode ruft die abstrakte Methode WriteMessage(Message, Int32, BufferManager, Int32) mit messageOffset = 0 auf.

Gilt für:

WriteMessage(Message, Int32, BufferManager, Int32)

Quelle:
MessageEncoder.cs
Quelle:
MessageEncoder.cs
Quelle:
MessageEncoder.cs

Schreibt beim Überschreiben in einer abgeleiteten Klasse eine Nachricht, die kleiner ist als die angegebene Größe, im angegebenen Offset in einen Bytearraypuffer.

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)

Parameter

message
Message

Die in den Nachrichtenpuffer zu schreibende Message.

maxMessageSize
Int32

Die maximal zulässige Nachrichtengröße, die geschrieben werden kann.

bufferManager
BufferManager

Der BufferManager, der den Puffer verwaltet, in den die Nachricht geschrieben wird.

messageOffset
Int32

Offset des Segments, das am Start des Bytearrays beginnt, das den Puffer bereitstellt.

Gibt zurück

Ein ArraySegment<T> vom Typ byte, das den Puffer bereitstellt, in dem die Nachricht serialisiert wird.

Beispiele

Im folgenden Codebeispiel wird die Implementierung der WriteMessage(Message, Int32, BufferManager, Int32)-Methode veranschaulicht.

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

Hinweise

Diese Methode wird von WriteMessage(Message, Int32, BufferManager, Int32) aufgerufen.

Gilt für: