MessageEncoder.WriteMessage Metod

Definition

När det åsidosätts i en härledd klass skriver du ett meddelande till en angiven dataström eller buffert.

Överlagringar

Name Description
WriteMessage(Message, Stream)

När det åsidosätts i en härledd klass skriver du ett meddelande till en angiven ström.

WriteMessage(Message, Int32, BufferManager)

Skriver ett meddelande som är mindre än en angiven storlek till en bytematrisbuffert.

WriteMessage(Message, Int32, BufferManager, Int32)

När det åsidosättas i en härledd klass skriver du ett meddelande med mindre än en angiven storlek till en bytematrisbuffert vid den angivna förskjutningen.

WriteMessage(Message, Stream)

När det åsidosätts i en härledd klass skriver du ett meddelande till en angiven ström.

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)

Parametrar

message
Message

Att Message skriva till stream.

stream
Stream

Objektet Stream som message är skrivet till.

Exempel

Följande kod visar hur du implementerar WriteMessage(Message, Stream) metoden.

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

Gäller för

WriteMessage(Message, Int32, BufferManager)

Skriver ett meddelande som är mindre än en angiven storlek till en bytematrisbuffert.

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)

Parametrar

message
Message

Att Message skriva till meddelandebufferten.

maxMessageSize
Int32

Den maximala meddelandestorleken som kan skrivas.

bufferManager
BufferManager

Som BufferManager hanterar bufferten som meddelandet skrivs till.

Returer

En ArraySegment<T> typ byte som tillhandahåller bufferten som meddelandet serialiseras till.

Kommentarer

Den här metoden anropar den abstrakta metoden WriteMessage(Message, Int32, BufferManager, Int32) med messageOffset = 0.

Gäller för

WriteMessage(Message, Int32, BufferManager, Int32)

När det åsidosättas i en härledd klass skriver du ett meddelande med mindre än en angiven storlek till en bytematrisbuffert vid den angivna förskjutningen.

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)

Parametrar

message
Message

Att Message skriva till meddelandebufferten.

maxMessageSize
Int32

Den maximala meddelandestorleken som kan skrivas.

bufferManager
BufferManager

Som BufferManager hanterar bufferten som meddelandet skrivs till.

messageOffset
Int32

Förskjutningen av segmentet som börjar från början av bytematrisen som tillhandahåller bufferten.

Returer

En ArraySegment<T> typ byte som tillhandahåller bufferten som meddelandet serialiseras till.

Exempel

Följande kod visar hur du implementerar WriteMessage(Message, Int32, BufferManager, Int32) metoden.

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

Kommentarer

Den här metoden anropas av WriteMessage(Message, Int32, BufferManager, Int32).

Gäller för