[英]WCF/RESTful DataContract deserialization issue
我正在尝试在WCF中实现宁静的服务,但是存在问题,因为该服务无法反序列化传递给它的xml。 它试图将根元素映射到操作协定,而不是数据协定。 例如,对于以下XML数据包,
<MyObject>
<MyField1>asdf</MyField1>
<MyField2>1234</MyField2>
...
</MyObject>
它无法将MyObject反序列化为输入消息,因为它期望该级别的操作协定。
我不想只使用所有字段作为操作合同的参数,因为1)将有5个以上的参数,以及2)它不会为扩展数据留出空间。
我设置了行为扩展来记录传入的请求。 我是否应该只使用根元素包装传入的消息,以使其正确反序列化? 还是有一种更轻松的方式来完成这项工作-而不会强迫客户端更改实现?
谢谢
我的解决方案是将我的运营合同更改为
[OperationContract(Action="*")]
void ProcessMessage(Message message);
并使用反序列化消息
var msg = message.GetBody<MyObject>();
与我现有的DataContract。
更新:我实际上选择使用XmlSerializer进行反序列化,因为它允许调用服务重新排列xml blob中字段的顺序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.