C# 获取阵列整理<;字节>;从System.ServiceModel.Channels消息

C# 获取阵列整理<;字节>;从System.ServiceModel.Channels消息,c#,.net,wcf,soap,C#,.net,Wcf,Soap,我必须修改SOAP头,以便覆盖 public override ArraySegment<byte> WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset) public-override-ArraySegment-WriteMessage(消息消息消息、int-maxMessageSize、BufferManager-BufferManage

我必须修改SOAP头,以便覆盖

public override ArraySegment<byte> WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset)
public-override-ArraySegment-WriteMessage(消息消息消息、int-maxMessageSize、BufferManager-BufferManager、int-messageOffset)
但是我必须返回ArraySegment,那么如何从System.ServiceModel.Channels.Message获取ArraySegment

公共覆盖ArraySegment WriteMessage(Message Message,int-maxMessageSize,BufferManager-BufferManager,int-messageOffset)
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;
}
{ MemoryStream stream=新的MemoryStream(); XmlWriter=XmlWriter.Create(流,this.writerSettings); message.WriteMessage(编写器); writer.Close(); byte[]messageBytes=stream.GetBuffer(); int messageLength=(int)stream.Position; stream.Close(); int totalLength=消息长度+消息偏移量; byte[]totalBytes=bufferManager.TakeBuffer(totalLength); 复制(messageBytes,0,totalBytes,messageOffset,messageLength); ArraySegment byteArray=新的ArraySegment(总字节数、messageOffset、messageLength); 乘火车返回; }
复制自。

公共覆盖阵列分段写入消息(消息消息消息,int-maxMessageSize,BufferManager-BufferManager,int-messageOffset)
{
MemoryStream stream=新的MemoryStream();
XmlWriter=XmlWriter.Create(流,this.writerSettings);
message.WriteMessage(编写器);
writer.Close();
byte[]messageBytes=stream.GetBuffer();
int messageLength=(int)stream.Position;
stream.Close();
int totalLength=消息长度+消息偏移量;
byte[]totalBytes=bufferManager.TakeBuffer(totalLength);
复制(messageBytes,0,totalBytes,messageOffset,messageLength);
ArraySegment byteArray=新的ArraySegment(总字节数、messageOffset、messageLength);
乘火车返回;
}
复制自。

请检查请检查