从XSD生成数据类以在wcf服务和客户端之间使用?

时间:2011-06-06 15:17:38

标签: xml wcf xsd

我使用xsd.exe工具生成数据类,但wcf不喜欢要交换的数据类并抛出错误

“尝试序列化参数http://tempuri.org/:orderItems时出错.InitoutException消息是'Type'Store.Schemas.Order',数据合同名称为'Order:http://schemas.datacontract。 org / 2004/07 / Store.Schemas'不是预期的。将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中。 。有关更多详细信息,请参阅InnerException。 “

有很多基于XSD的课程。根据MSDN,它说http://msdn.microsoft.com/en-us/library/ms751512.aspx,每个数据类都要用KnownTypeAttribute,DataContractAttribute,DataMemberAttribute等进行修饰。

有没有办法可以从xsd生成可以与WCF服务一起使用的数据类?因为不推荐更改XSD.exe生成的类,也不建议轻松处理。

3 个答案:

答案 0 :(得分:0)

我想第一个问题是你是否也有wsdl,它指的是xsd。如果是,则可以使用scvutil.exe并传递wsdl路径,并确保xsd文件与wsdl文件位于同一目录中。这将为您生成所需的数据类。

HTH

答案 1 :(得分:0)

如果要使用XSD.exe生成类,您将获得标记有所有这些Xml属性的XML可序列化数据类型,并通过XmlSerializer注册其序列化。默认情况下,Wcf使用DataContractSerializer,它不使用用于描述序列化的那些属性。您必须使用服务,运营或服务合同上的XmlSerializer属性切换到XmlSerializerFormat

答案 2 :(得分:0)

http://wscfblue.codeplex.com/开源生成器解决了问题