c# - 获取 ArraySegment来自 System.ServiceModel.Channels 消息
问题描述
我不得不修改 SOAP 标头,所以我覆盖
public override ArraySegment<byte> WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset)
但我必须返回 ArraySegment,那么如何从 System.ServiceModel.Channels.Message 获取 ArraySegment
解决方案
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;
}
复制自官方文档。
推荐阅读
- java - 如何使用 ORMLite 同时在表中写入多个项目
- amazon-quicksight - AWS Quick Sight - 查询和数据检索机制
- javascript - Discord.js :部分代码不起作用,但没有错误
- javascript - 我可以压缩由 40 个不同字符组成的 400 个字符多少?
- html - 在django模板中如何在提交后保留下拉选择的选项?
- qt - QGraphicsView additem() 越来越大
- azure - Azure 事件网格 Webhook 验证握手
- javascript - 根据另一个数组过滤一个数组。(使用反应)
- r - 根据不同日期变量的观测值的存在或缺失生成新的因子变量
- python - 是否有可以读取多个 excel 表但只有 sheet1 具有标题的 pandas 函数