語言

MessageEncoder.WriteMessage 方法

定義

當在派生類別中被覆寫時,會將訊息寫入指定的串流或緩衝區。

多載

名稱 Description
WriteMessage(Message, Stream)

當在衍生類別中覆寫時,會寫入指定的串流訊息。

WriteMessage(Message, Int32, BufferManager)

將訊息寫入位元組陣列緩衝區,大小小於指定大小。

WriteMessage(Message, Int32, BufferManager, Int32)

當在派生類別中覆寫時,會將大小小於指定大小的訊息寫入指定偏移量的位元組陣列緩衝區。

WriteMessage(Message, Stream)

來源:
MessageEncoder.cs
來源:
MessageEncoder.cs
來源:
MessageEncoder.cs

當在衍生類別中覆寫時,會寫入指定的串流訊息。

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)

參數

message
Message

寫 Message 入 stream.

stream
Stream

寫 Stream 的 message 對象。

範例

以下程式碼說明如何實作此 WriteMessage(Message, Stream) 方法。

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

適用於

WriteMessage(Message, Int32, BufferManager)

來源:
MessageEncoder.cs
來源:
MessageEncoder.cs
來源:
MessageEncoder.cs

將訊息寫入位元組陣列緩衝區,大小小於指定大小。

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)

參數

message
Message

Message寫入訊息緩衝區。

maxMessageSize
Int32

可寫入的最大訊息大小。

bufferManager
BufferManager

那 BufferManager 個管理訊息寫入的緩衝區。

傳回

ArraySegment<T> A 型byte別提供訊息序列化的緩衝區。

備註

此方法呼叫抽象方法 WriteMessage(Message, Int32, BufferManager, Int32) ,且 messageOffset = 0。

適用於

WriteMessage(Message, Int32, BufferManager, Int32)

來源:
MessageEncoder.cs
來源:
MessageEncoder.cs
來源:
MessageEncoder.cs

當在派生類別中覆寫時,會將大小小於指定大小的訊息寫入指定偏移量的位元組陣列緩衝區。

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)

參數

message
Message

Message寫入訊息緩衝區。

maxMessageSize
Int32

可寫入的最大訊息大小。

bufferManager
BufferManager

那 BufferManager 個管理訊息寫入的緩衝區。

messageOffset
Int32

從提供緩衝區的位元組陣列起始的區段偏移量。

傳回

ArraySegment<T> A 型byte別提供訊息序列化的緩衝區。

範例

以下程式碼說明如何實作此 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;
}

備註

此方法稱為 WriteMessage(Message, Int32, BufferManager, Int32)。

適用於