首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在WCF OperationContracts中正确使用MessageContract?

如何在WCF OperationContracts中正确使用MessageContract?
EN

Stack Overflow用户
提问于 2011-06-09 19:34:52
回答 2查看 2.9K关注 0票数 2

有人能给我指出(如果可能的话,在这里回答)描述如何在WCF操作中正确使用MessageContract的材料/参考资料吗?我已经读过this文档了。

我想知道: 1)使用MessageContract作为操作契约的返回值有什么限制? 2)如果用MessageContract修饰的类有一个返回用XmlRoot修饰的类的对象的属性怎么办? 3)如果MessageContract要包含数组或集合,有什么限制或考虑因素吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-09 19:58:19

  1. 的限制是,一旦您使用MessageContract进行请求描述,您就必须将其用于响应,反之亦然。唯一的例外是默认情况下返回parameters.
  2. WCF或不接受DataContractSerializer的操作使用XmlSerializer,但您可以通过使用XmlSerailazerFormat属性标记契约、服务或操作来将其切换为XmlSerailazerFormat。在这种情况下,序列化将忽略DataContract / DataMember属性,并开始使用通用的Xml序列化属性(包括XmlRoot)。最重要的是,MessageContract与使用的序列化程序无关-它既可以与DataContract一起使用,也可以与Xml一起使用。serialization.
  3. I将传递嵌套在其他元素中的集合。我不确定是否可以将未包装的集合直接传递到soap:Body中,因为它应该表示为多个body元素,这些元素由MessageContract分别处理-每个元素都标有MessageBodyMember属性。
票数 3
EN

Stack Overflow用户

发布于 2011-06-09 19:42:54

MessageContract属性允许/要求您为操作指定整个消息的格式,并对如何序列化/反序列化消息进行细粒度控制,而不是控制序列化中是否包含单个字段的DataContract/DataMember属性。

XmlRoot属性由System.Xml.XmlSerializer类在处理可序列化类时使用;WCF使用不使用此属性的DataContractSerializer。

此问题中有更多信息:Why does the XmlRoot attribute gets ignored in WCF and how to overcome this

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6292147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档