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

问题描述:

我用xsd.exe工具生成数据类,但WCF不喜欢数据类进行交换,并引发从XSD生成数据类以在wcf服务和客户端之间使用?

“有,而试图序列参数http://tempuri.org/:orderItems错误的错误。该消息的InnerException是'输入'Store.Schemas.Order'与数据协定名称'Order:http://schemas.datacontract.org/2004/07/Store.Schemas'是不需要的。将任何未知的静态类型添加到已知类型的列表中 - 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型的列表中''请参阅InnerException获取更多详细信息 “

re是很多基于XSD的类。作为每MSDN,它说http://msdn.microsoft.com/en-us/library/ms751512.aspx,每个数据类与KnownTypeAttribute,DataContractAttribute装饰,DataMemberAttribute等

有没有一种方法,我可以从XSD生成的数据类,它可以与WCF服务使用?因为更改XSD.exe生成的类是不被推荐也不容易的过程。

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

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

HTH

+0

请问您可以粘贴示例语法吗? – DotNetDeveloper 2011-06-06 16:40:04

+0

“C:\ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ bin \ svcutil.exe”/ t:code * .wsdl * .xsd/language:C# – rauts 2011-06-07 10:08:09

+0

您可以从WSDL追加?wsdl到服务(svc)网址。一旦你得到了这些,你保存一份与你的xsd文件在同一位置的副本。然后转到visual studio并添加服务引用并在服务URL中提供WSDL文件的路径。如果xsd在WSDL中匹配,那么你应该有你的数据类生成。 – rauts 2011-06-07 10:11:35

如果你想生成使用XSD.EXE你会得到所有标有这些XML序列化的XML数据类型的类属性由XmlSerializer conrolling其序列化。 Wcf默认使用DataContractSerializer,它不使用那些用于描述序列化的属性。您必须在服务,操作或服务合同上使用XmlSerializerFormat属性切换到XmlSerializer

+0

@rauts ...我没有'明白你的意思是由wsdl?我有在IIS上运行的服务。你可以复制SVCutil.exe采取xsd文件,以及服务的URL的示例语法 – DotNetDeveloper 2011-06-06 16:33:06

+0

@Ladislav Mrnka ....我试着用[ServiceContract,XmlSerializerFormat(Style = OperationFormatStyle.Rpc, Use = OperationFormatUse.Encoded )] 它并没有工作,仍然抱怨在xsd文件中的一些类 – DotNetDeveloper 2011-06-06 16:34:15

+0

你是如何得到这些XSD的? – 2011-06-06 16:36:28