MessageEncoder.WriteMessage Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Po zastąpieniu w klasie pochodnej zapisuje komunikat do określonego strumienia lub buforu.
Przeciążenia
WriteMessage(Message, Stream) |
Gdy zastąpisz klasę pochodną, zapisuje komunikat do określonego strumienia. |
WriteMessage(Message, Int32, BufferManager) |
Zapisuje komunikat mniejszy niż określony rozmiar buforu tablicy bajtowej. |
WriteMessage(Message, Int32, BufferManager, Int32) |
Po przesłonięciu w klasie pochodnej zapisuje komunikat o rozmiarze mniejszym niż określony rozmiar do buforu tablicy bajtowej w określonym przesunięciu. |
WriteMessage(Message, Stream)
- Źródło:
- MessageEncoder.cs
- Źródło:
- MessageEncoder.cs
- Źródło:
- MessageEncoder.cs
Gdy zastąpisz klasę pochodną, zapisuje komunikat do określonego strumienia.
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)
Parametry
Przykłady
Poniższy kod pokazuje, jak zaimplementować metodę WriteMessage(Message, Stream) .
public override void WriteMessage(Message message, Stream stream)
{
XmlWriter writer = XmlWriter.Create(stream, this.writerSettings);
message.WriteMessage(writer);
writer.Close();
}
Dotyczy
WriteMessage(Message, Int32, BufferManager)
- Źródło:
- MessageEncoder.cs
- Źródło:
- MessageEncoder.cs
- Źródło:
- MessageEncoder.cs
Zapisuje komunikat mniejszy niż określony rozmiar buforu tablicy bajtowej.
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)
Parametry
- maxMessageSize
- Int32
Maksymalny rozmiar wiadomości, który można zapisać.
- bufferManager
- BufferManager
Element BufferManager , który zarządza buforem, do którego jest zapisywany komunikat.
Zwraca
Typ ArraySegment<T>byte
, który zapewnia bufor, do którego jest serializowany komunikat.
Uwagi
Ta metoda wywołuje metodę WriteMessage(Message, Int32, BufferManager, Int32) abstrakcyjną z messageOffset
= 0.
Dotyczy
WriteMessage(Message, Int32, BufferManager, Int32)
- Źródło:
- MessageEncoder.cs
- Źródło:
- MessageEncoder.cs
- Źródło:
- MessageEncoder.cs
Po przesłonięciu w klasie pochodnej zapisuje komunikat o rozmiarze mniejszym niż określony rozmiar do buforu tablicy bajtowej w określonym przesunięciu.
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)
Parametry
- maxMessageSize
- Int32
Maksymalny rozmiar wiadomości, który można zapisać.
- bufferManager
- BufferManager
Element BufferManager , który zarządza buforem, do którego jest zapisywany komunikat.
- messageOffset
- Int32
Przesunięcie segmentu rozpoczynającego się od początku tablicy bajtów, która udostępnia bufor.
Zwraca
Typ ArraySegment<T>byte
, który zapewnia bufor, do którego jest serializowany komunikat.
Przykłady
Poniższy kod pokazuje, jak zaimplementować metodę 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;
}
Uwagi
Ta metoda jest wywoływana przez WriteMessage(Message, Int32, BufferManager, Int32)metodę .