【问题标题】:How to read the System.ServiceModel.Message?如何阅读 System.ServiceModel.Message?
【发布时间】:2011-11-13 05:15:32
【问题描述】:

我遇到了这种情况。

主要功能:

Message msg = Message.CreateMessage(MessageVersion.Default, "Process");
String xmlData ="<Name>Navin</Name>";
Byte[] ba = Encoding.ASCII.GetBytes(xmlData);
MemoryStream ms = new MemoryStream(ba);

XmlWriter xw = XmlWriter.Create(ms);

msg.WriteBody(xw);

readMessage(msg);

在 readMessage(Message msg) 中:

XmlDictionaryReader xdr = msg.GetReaderAtBodyContents();

当我这样做时,我收到了这个错误。 未处理的异常:System.InvalidOperationException:此消息不能支持 rt 操作,因为它已被写入。

如何克服这个问题。

等待响应。

提前致谢。

【问题讨论】:

    标签: wcf serialization message


    【解决方案1】:

    根据 MSDN Message.GetReaderAtBodyContents Method,一旦消息正文被读取或写入,您将无法访问它 - 它只能访问一次。您需要使用“CreateBufferedCopy”多次访问一条消息。

    我在 MSDN 文档中没有找到任何示例,但看起来您需要通过 Message.CreateBufferedCopy 创建一个 MessageBuffer 实例,然后您可以使用 MessageBuffer 的 CreateMessage 方法来访问缓冲区。

    见:

    Message.CreateBufferedCopy Method

    MessageBuffer Class

    MessageBuffer.CreateMessage Method

    【讨论】:

      猜你喜欢
      • 2011-09-08
      • 2011-01-19
      • 2012-01-16
      • 2018-06-11
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多