MessageEncoder.WriteMessage Method (Message, Int32, BufferManager, Int32)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

When overridden in a derived class, writes a message of less than a specified size to a byte array buffer at the specified offset.

Namespace:   System.ServiceModel.Channels
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

public abstract ArraySegment<byte> WriteMessage(
	Message message,
	int maxMessageSize,
	BufferManager bufferManager,
	int messageOffset


Type: System.ServiceModel.Channels.Message

The Message to write to the message buffer.

Type: System.Int32

The maximum message size that can be written.

Type: System.ServiceModel.Channels.BufferManager

The BufferManager that manages the buffer to which the message is written.

Type: System.Int32

The offset of the segment that begins from the start of the byte array that provides the buffer.

Return Value

Type: System.ArraySegment<Byte>

A ArraySegment<T> of type byte that provides the buffer to which the message is serialized.

This method is called by WriteMessage(Message, Int32, BufferManager, Int32).

The following code shows how to implement the WriteMessage(Message, Int32, BufferManager, Int32) method.

public override ArraySegment<byte> WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset)
    MemoryStream stream = new MemoryStream();
    XmlWriter writer = XmlWriter.Create(stream, this.writerSettings);

    byte[] messageBytes = stream.GetBuffer();
    int messageLength = (int)stream.Position;

    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;

Universal Windows Platform
Available since 8
.NET Framework
Available since 3.0
Portable Class Library
Supported in: portable .NET platforms
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Return to top