2011-06-06 61 views
1

我用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生成的類是不被推薦也不容易的過程。

回答

0

我想第一個問題是,你是否也有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

0

如果你想生成使用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

相關問題