创建 WCF 消息的缓冲副本
本文关键字:缓冲 副本 消息 WCF 创建 | 更新日期: 2023-09-27 18:32:04
我在消息检查器中有以下代码来检查响应正文。我知道 WCF 消息只能读取一次,因此我先创建一个副本。但是使用以下代码,我仍然收到错误"此消息无法支持该操作,因为它已被读取"。...我错过了什么吗?
MessageBuffer buffer = message.CreateBufferedCopy(Int32.MaxValue);
Message copy = buffer.CreateMessage();
message = copy;
XmlDictionaryReader bodyReader = copy.GetReaderAtBodyContents();
bodyReader.ReadStartElement("Binary");
byte[] bodyBytes = bodyReader.ReadContentAsBase64();
string messageBody = Encoding.UTF8.GetString(bodyBytes);
return messageBody;
我也觉得在那里使用 Int23.MaxValue 不舒服。什么是合理的尺寸?
试试这段代码:
MessageBuffer buffer = message.CreateBufferedCopy(Int32.MaxValue);
message = buffer.CreateMessage();
var copy = buffer.CreateMessage();
XmlDictionaryReader bodyReader = copy.GetReaderAtBodyContents();
bodyReader.ReadStartElement("Binary");
byte[] bodyBytes = bodyReader.ReadContentAsBase64();
string messageBody = Encoding.UTF8.GetString(bodyBytes);
return messageBody;