【问题标题】:Schema generated from WCF web service and ASMX are different从 WCF Web 服务和 ASMX 生成的架构不同
【发布时间】:2010-04-07 13:13:51
【问题描述】:

我有以下课程

[Serializable()]  
[XmlType(AnonymousType=true)][XmlRoot(Namespace="", IsNullable=false)]  
public class Test  
{  
   [XmlAttribute()]  
   public string Prop { get; set; }  

   public string Another { get; set; }  
}

我在 WCF Web 服务 (SVC) 和 ASMX Web 服务中都使用了这个类,我希望得到一个与 ASMX 和 SVC 一致的 SOAP 主体,其中“Prop”属性是一个属性。此外,我尝试添加对 SVC 和 ASMX 的服务和 Web 引用,这就是 XSD 的样子:

  1. 对 SVC 的服务引用:没有为 Test.Prop 属性创建 XmlAttribute 属性
  2. 对 ASMX 的服务引用:为 Test.Prop 属性创建了 XmlAttribute 属性
  3. 对 SVC 的 Web 引用:为 Test.Prop 属性创建了 XmlElement
  4. 对 ASMX 的 Web 引用:为 Test.Prop 属性创建了 XmlAttribute 属性

我的问题是为什么生成的 XSD 和 SOAP XML 不包括在内?我知道这并不重要,因为无论生成的架构如何,这两种方法都有效。

【问题讨论】:

    标签: xml wcf web-services xsd schema


    【解决方案1】:

    WCF 默认使用 DataContract 序列化程序,这与 ASMX 使用的 XmlSerializer 不同。因此,生成的 XSD 也会有所不同 - DataCONtract 序列化程序,例如不支持 XML 属性(出于速度原因)。

    查看 Dan Rigsby 的出色 blog post comparing the two serializers 和 Aaron Skonnard 的 MSDN 杂志文章 Serialization in WCF 了解更多详情。

    【讨论】:

      猜你喜欢
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 2012-04-17
      • 1970-01-01
      相关资源
      最近更新 更多