MessageBuffer.WriteMessage(Stream) Method

Definition

Writes the entire content of this buffer to the specified IO stream.

public virtual void WriteMessage (System.IO.Stream stream);

Parameters

stream
Stream

An IO stream that the entire content of this buffer is written to.

Examples

private byte[] ConvertMessageToByteArray(ref Message message)   
{  
    // Memory stream that contains the message.
    var stream = new MemoryStream();  
    // Create an XmlWriter to serialize the message into a byte array.
    var settings = new XmlWriterSettings();
    settings.Encoding = System.Text.Encoding.UTF8;
    XmlWriter writer = XmlWriter.Create(stream, settings);
    // Copy the message into a buffer.
    // Note: This call changes the original message's state.
    MessageBuffer buffer = message.CreateBufferedCopy(int.MaxValue);  
    // Create a copy of the message.
    message = buffer.CreateMessage();  
    // Serialize the message to the XmlWriter.
    message.WriteMessage(writer);  
    // Recreate the message.
    message = buffer.CreateMessage();
    // Flush the contents of the writer so that the stream gets updated.
    writer.Flush();  
    stream.Flush();  
    // Convert the stream to an array.
    byte[] retval = stream.ToArray();
    return retval;
}  

Remarks

This function uses a binary encoder instead of a UTF-8 encoder. Therefore, you cannot directly convert from a MessageBuffer to a Message. The code in the example section shows how to work around this problem.

Applies to

Product Versions
.NET Core 1.0, Core 1.1, 8 (package-provided), 9 (package-provided)
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7 (package-provided), 4.7, 4.7.1 (package-provided), 4.7.1, 4.7.2 (package-provided), 4.7.2, 4.8 (package-provided), 4.8, 4.8.1
.NET Standard 2.0 (package-provided)
UWP 10.0