我有以下课程
[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都是一致的,其中“Prop”属性是一个属性。此外,我尝试向SVC和ASMX添加服务和Web引用,这里是XSD的样子:
我的问题是为什么生成的XSD和SOAP XML不构成?我知道这无关紧要,因为无论生成的架构如何,这两种方法都有效。
答案 0 :(得分:2)
默认情况下,WCF使用DataContract序列化程序,这与ASMX使用的XmlSerializer不同。因此,生成的XSD也会有所不同 - 例如DataCOntract序列化器不支持XML属性(出于速度原因)。
查看Dan Rigsby的优秀blog post comparing the two serializers和Aaron Skonnard的MSDN杂志文章Serialization in WCF了解更多详情。