【发布时间】:2013-01-14 10:54:34
【问题描述】:
如标题所示,在什么情况下 svcutil.exe 决定在生成的代理代码中应用 XmlSerializerFormatAttribute?我找不到任何关于此的文档,因此我将不胜感激链接一些来源。
【问题讨论】:
标签: c# wcf xml-serialization svcutil.exe
如标题所示,在什么情况下 svcutil.exe 决定在生成的代理代码中应用 XmlSerializerFormatAttribute?我找不到任何关于此的文档,因此我将不胜感激链接一些来源。
【问题讨论】:
标签: c# wcf xml-serialization svcutil.exe
只要 Web 服务的架构与 DataContractSerializer 不兼容,就会选择 XmlSerializer(并应用 XmlSerializerFormatAttribute)。正如用户“Aphelion”在他们的回答中指出的那样,可能发生这种情况的一种情况是在使用一些遗留的 ASMX Web 服务时。但是,在与非 .NET 服务(例如,基于 Java)进行互操作时,这种情况也很常见。此处的最终文档实际上是 http://msdn.microsoft.com/en-us/library/ms733112.aspx ,它准确地告诉您架构中支持和不支持的内容。
【讨论】:
XmlSerializerFormat 用于支持与 ASMX(经典 Web 服务)的向后兼容性。
默认情况下,代理将使用DataContractSerializer。如果 WSDL 文档中的架构元素使用了 DataContractSerializer 无法处理的 XSD 架构特性,它将选择 XmlSerializer。
我可以推荐 Michele Leroux Bustamante 的 'Learning WCF' 以获得一些深入的示例。
【讨论】: