我需要阅读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的结果:
...流...
答案 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>()
。