读取请求消息正文时出错

时间:2015-11-30 12:12:29

标签: c# wcf

我需要阅读WCF项目中的消息内容,如

 var messageContent = Encoding.UTF8.GetString(OperationContext.Current.RequestContext.RequestMessage.GetBody<byte[]>());

但结果我收到了一个错误:

  

期望来自命名空间的元素'base64Binary'   'http://schemas.microsoft.com/2003/10/Serialization/'遇到了   'Element',名称为'Human',名称空间   'http://numans.hr-xml.org/2007-04-15'。

你能告诉我我做错了吗?

我发送的内容是:

<Human xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://numans.hr-xml.org/2007-04-15">
  <HumanId>
    <guid>c2ee9a7e-c7a8-48e0-910b-47c2012bfa8e</guid>
  </HumanId>
  ...
</Human>

我还尝试阅读以下内容:

var messageContent = OperationContext.Current.RequestContext.RequestMessage.ToString();

messageContent的结果:

  

...流...

1 个答案:

答案 0 :(得分:5)

billing因此,当您调用GetBody<byte[]>()时,反序列化器需要base64编码的二进制数据,但会找到<Human>元素。

如果您只想将邮件正文作为string阅读,请使用GetBody<T> is used to deserialize the message body as type T.返回XmlDictionaryReader,您可以使用GetReaderAtBodyContents

如果您想将正文作为打字内容阅读,请从其XML表示中创建一个Human类,然后使用GetBody<Human>()