MessageEncoder.WriteMessage Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Quando sottoposto a override in una classe derivata, scrive un messaggio in un flusso o un buffer specificato.
Overload
| Nome | Descrizione |
|---|---|
| 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 minore di una dimensione specificata in un buffer di matrice di byte. |
| WriteMessage(Message, Int32, BufferManager, Int32) |
Quando sottoposto a override in una classe derivata, scrive un messaggio minore di una dimensione specificata in un buffer di matrice di byte in corrispondenza dell'offset specificato. |
WriteMessage(Message, Stream)
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
Esempio
Il codice seguente illustra come implementare il WriteMessage(Message, Stream) metodo .
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)
Scrive un messaggio minore di una dimensione 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
- maxMessageSize
- Int32
Dimensione massima del messaggio che può essere scritta.
- bufferManager
- BufferManager
Oggetto BufferManager che gestisce il buffer in cui viene scritto il messaggio.
Valori restituiti
Oggetto ArraySegment<T> di tipo byte che fornisce il buffer a cui 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)
Quando sottoposto a override in una classe derivata, scrive un messaggio minore di una dimensione 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
- maxMessageSize
- Int32
Dimensione massima del messaggio che può essere scritta.
- bufferManager
- BufferManager
Oggetto BufferManager che gestisce il buffer in cui viene scritto il messaggio.
- messageOffset
- Int32
Offset del segmento che inizia dall'inizio della matrice di byte che fornisce il buffer.
Valori restituiti
Oggetto ArraySegment<T> di tipo byte che fornisce il buffer a cui viene serializzato il messaggio.
Esempio
Il codice seguente illustra come implementare il WriteMessage(Message, Int32, BufferManager, Int32) metodo .
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).