MessageEncoder.WriteMessage Metoda

Definice

Při přepsání v odvozené třídě zapíše zprávu do zadaného datového proudu nebo vyrovnávací paměti.

Přetížení

Name Description
WriteMessage(Message, Stream)

Při přepsání v odvozené třídě zapíše zprávu do zadaného datového proudu.

WriteMessage(Message, Int32, BufferManager)

Zapíše zprávu menší než zadanou velikost do vyrovnávací paměti pole bajtů.

WriteMessage(Message, Int32, BufferManager, Int32)

Při přepsání v odvozené třídě zapíše zprávu menší než zadanou velikost do vyrovnávací paměti bajtového pole na zadaném posunu.

WriteMessage(Message, Stream)

Zdroj:
MessageEncoder.cs
Zdroj:
MessageEncoder.cs
Zdroj:
MessageEncoder.cs

Při přepsání v odvozené třídě zapíše zprávu do zadaného datového proudu.

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)

Parametry

message
Message

Zápis Message do souboru stream.

stream
Stream

Objekt Stream , do kterého je zapsán message .

Příklady

Následující kód ukazuje, jak implementovat metodu WriteMessage(Message, Stream) .

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

Platí pro

WriteMessage(Message, Int32, BufferManager)

Zdroj:
MessageEncoder.cs
Zdroj:
MessageEncoder.cs
Zdroj:
MessageEncoder.cs

Zapíše zprávu menší než zadanou velikost do vyrovnávací paměti pole bajtů.

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)

Parametry

message
Message

Zápis Message do vyrovnávací paměti zprávy.

maxMessageSize
Int32

Maximální velikost zprávy, kterou lze zapsat.

bufferManager
BufferManager

Ta BufferManager spravuje vyrovnávací paměť, do které je zpráva zapsána.

Návraty

ArraySegment<T> Typbyte, který poskytuje vyrovnávací paměť, do které je zpráva serializována.

Poznámky

Tato metoda volá abstraktní metodu WriteMessage(Message, Int32, BufferManager, Int32) s messageOffset = 0.

Platí pro

WriteMessage(Message, Int32, BufferManager, Int32)

Zdroj:
MessageEncoder.cs
Zdroj:
MessageEncoder.cs
Zdroj:
MessageEncoder.cs

Při přepsání v odvozené třídě zapíše zprávu menší než zadanou velikost do vyrovnávací paměti bajtového pole na zadaném posunu.

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)

Parametry

message
Message

Zápis Message do vyrovnávací paměti zprávy.

maxMessageSize
Int32

Maximální velikost zprávy, kterou lze zapsat.

bufferManager
BufferManager

Ta BufferManager spravuje vyrovnávací paměť, do které je zpráva zapsána.

messageOffset
Int32

Posun segmentu, který začíná od začátku bajtového pole poskytující vyrovnávací paměť.

Návraty

ArraySegment<T> Typbyte, který poskytuje vyrovnávací paměť, do které je zpráva serializována.

Příklady

Následující kód ukazuje, jak implementovat metodu 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;
}

Poznámky

Tato metoda je volána .WriteMessage(Message, Int32, BufferManager, Int32)

Platí pro