从WCF Web服务和ASMX生成的模式是不同的(Schema generated from WCF

2019-10-21 00:30发布

我有以下类

[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服务使用这个类,我希望得到一个SOAP体是两个ASMX和SVC这里的“道具”属性是一个属性是一致的。 另外,我尝试添加服务和网络,参照上述两个SVC和ASMX和这里的的XSD如何看起来像:

  1. 服务参考SVC:未创建Test.Prop属性XmlAttribute属性
  2. 服务参考ASMX:创建XmlAttribute属性为Test.Prop财产
  3. Web引用到SVC:为Test.Prop属性创建的XmlElement
  4. Web引用到ASMX:创建XmlAttribute属性为Test.Prop财产

我的问题是,为什么在生成的XSD,因此SOAP个XML不包括? 我知道这并不重要,无论是这两种方法的工作所产生的架构。

Answer 1:

WCF默认使用DataContract序列化,这是由XmlSerializer的区别在于ASMX使用。 因此,产生的XSD会有所不同,太 - DataCOntract串行如不支持XML属性(速度的原因)。

退房丹Rigsby的优秀博客文章比较两个串行 ,亚伦Skonnard的MSDN杂志文章中WCF序列化的更多细节。



文章来源: Schema generated from WCF web service and ASMX are different