繁体   English   中英

WCF / RESTful DataContract反序列化问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM