Condividi tramite


MessageEncoder.WriteMessage Metodo

Definizione

Quando sottoposto a override in una classe derivata, scrive un messaggio in un flusso o buffer specificato.

Overload

WriteMessage(Message, Stream)

Quando sottoposto a override in una classe derivata, scrive un messaggio in un flusso specificato.

WriteMessage(Message, Int32, BufferManager)

Scrive un messaggio di dimensione inferiore a quella specificata in un buffer di matrice di byte.

WriteMessage(Message, Int32, BufferManager, Int32)

Quando sottoposto a override in una classe derivata, scrive un messaggio di dimensione inferiore a quella specificata in un buffer di matrice di byte in corrispondenza dell'offset specificato.

WriteMessage(Message, Stream)

Origine:
MessageEncoder.cs
Origine:
MessageEncoder.cs
Origine:
MessageEncoder.cs

Quando sottoposto a override in una classe derivata, scrive un messaggio in un flusso specificato.

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)

Parametri

message
Message

Oggetto Message da scrivere in stream.

stream
Stream

Oggetto Stream in cui viene scritto message.

Esempio

Nel codice seguente viene illustrato come implementare il metodo WriteMessage(Message, Stream).

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

Si applica a

WriteMessage(Message, Int32, BufferManager)

Origine:
MessageEncoder.cs
Origine:
MessageEncoder.cs
Origine:
MessageEncoder.cs

Scrive un messaggio di dimensione inferiore a quella specificata in un buffer di matrice di 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)

Parametri

message
Message

Oggetto Message da scrivere nel buffer dei messaggi.

maxMessageSize
Int32

Dimensione massima consentita per la scrittura di un messaggio.

bufferManager
BufferManager

Classe BufferManager che gestisce il buffer nel quale viene scritto il messaggio.

Restituisce

Struttura ArraySegment<T> di tipo byte che fornisce il buffer nel quale viene serializzato il messaggio.

Commenti

Questo metodo chiama il metodo WriteMessage(Message, Int32, BufferManager, Int32) astratto con messageOffset = 0.

Si applica a

WriteMessage(Message, Int32, BufferManager, Int32)

Origine:
MessageEncoder.cs
Origine:
MessageEncoder.cs
Origine:
MessageEncoder.cs

Quando sottoposto a override in una classe derivata, scrive un messaggio di dimensione inferiore a quella specificata in un buffer di matrice di byte in corrispondenza dell'offset specificato.

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)

Parametri

message
Message

Oggetto Message da scrivere nel buffer dei messaggi.

maxMessageSize
Int32

Dimensione massima consentita per la scrittura di un messaggio.

bufferManager
BufferManager

Classe BufferManager che gestisce il buffer nel quale viene scritto il messaggio.

messageOffset
Int32

Offset del segmento che inizia dall'inizio della matrice di byte che fornisce il buffer.

Restituisce

Struttura ArraySegment<T> di tipo byte che fornisce il buffer nel quale viene serializzato il messaggio.

Esempio

Nel codice seguente viene illustrato come implementare il metodo 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;
}

Commenti

Questo metodo viene chiamato da WriteMessage(Message, Int32, BufferManager, Int32).

Si applica a