创建WCF消息的缓冲副本

我在消息检查器中有以下代码来检查响应正文。 我知道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;