Bagikan melalui


MessageEncoder.WriteMessage Metode

Definisi

Saat ditimpa di kelas turunan, menulis pesan ke aliran atau buffer tertentu.

Overload

WriteMessage(Message, Stream)

Saat ditimpa di kelas turunan, menulis pesan ke aliran tertentu.

WriteMessage(Message, Int32, BufferManager)

Menulis pesan kurang dari ukuran yang ditentukan ke buffer array byte.

WriteMessage(Message, Int32, BufferManager, Int32)

Saat ditimpa di kelas turunan, menulis pesan kurang dari ukuran yang ditentukan ke buffer array byte pada offset yang ditentukan.

WriteMessage(Message, Stream)

Sumber:
MessageEncoder.cs
Sumber:
MessageEncoder.cs
Sumber:
MessageEncoder.cs

Saat ditimpa di kelas turunan, menulis pesan ke aliran tertentu.

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

Message untuk menulis ke stream.

stream
Stream

Objek Stream yang message ditulis.

Contoh

Kode berikut menunjukkan cara mengimplementasikan WriteMessage(Message, Stream) metode .

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

Berlaku untuk

WriteMessage(Message, Int32, BufferManager)

Sumber:
MessageEncoder.cs
Sumber:
MessageEncoder.cs
Sumber:
MessageEncoder.cs

Menulis pesan kurang dari ukuran yang ditentukan ke buffer array 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)

Parameter

message
Message

Message untuk menulis ke buffer pesan.

maxMessageSize
Int32

Ukuran pesan maksimum yang dapat ditulis.

bufferManager
BufferManager

BufferManager yang mengelola buffer tempat pesan ditulis.

Mengembalikan

ArraySegment<T> Jenis byte yang menyediakan buffer tempat pesan diserialisasikan.

Keterangan

Metode ini memanggil metode WriteMessage(Message, Int32, BufferManager, Int32) abstrak dengan messageOffset = 0.

Berlaku untuk

WriteMessage(Message, Int32, BufferManager, Int32)

Sumber:
MessageEncoder.cs
Sumber:
MessageEncoder.cs
Sumber:
MessageEncoder.cs

Saat ditimpa di kelas turunan, menulis pesan kurang dari ukuran yang ditentukan ke buffer array byte pada offset yang ditentukan.

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

Message untuk menulis ke buffer pesan.

maxMessageSize
Int32

Ukuran pesan maksimum yang dapat ditulis.

bufferManager
BufferManager

BufferManager yang mengelola buffer tempat pesan ditulis.

messageOffset
Int32

Offset segmen yang dimulai dari awal array byte yang menyediakan buffer.

Mengembalikan

ArraySegment<T> Jenis byte yang menyediakan buffer tempat pesan diserialisasikan.

Contoh

Kode berikut menunjukkan cara mengimplementasikan WriteMessage(Message, Int32, BufferManager, Int32) metode .

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

Keterangan

Metode ini dipanggil oleh WriteMessage(Message, Int32, BufferManager, Int32).

Berlaku untuk