我開發.NET 3.5中WCF框架服務和託管他們的IIS 5.1的Windows XP SP3與basicHttpBiding。
在.net 2.0框架中開發的服務客戶端。爲此我使用WSDL.EXE生成代理客戶端。該工具生成代理類,沒有任何問題,但它增加了對每個屬性的問題,增加了額外的屬性「[屬性]指定」,但沒有任何問題做工精細,只需要指定「規定=真正的」分配時價值到任何屬性
要刪除此額外的屬性,我添加了XmlSerializerFormat attribe以及ServiceContract屬性。 WSDL.EXE生成沒有額外屬性的類,,但不包括之前包含的某些類。
是否有我需要設置來生成排除類的任何屬性?
注意:所有合同類別歸於DataContract以及屬性DataMemeber。
NRK使用WSDL不匹配的的ServiceContract生成WCF代理客戶端,XmlSerializerFormat屬性
回答
XmlSerializer使用XmlIncludeAttribute而不是KnownTypeAttribute
來發現未包含在操作合同中的子類型。所以,你可以嘗試將其添加到基類:
[XmlInclude(typeof(ChildClass1))]
[XmlInclude(typeof(ChildClass2))]
public class BaseClass {}
標準WCF的DataContractSerializer將序列一切標有[DataMember]
- 無論.NET知名度(公共/保護/私營/內部)。
當您切換到XmlSerializerFormat時,行爲會發生變化 - 現在XmlSerializer會將所有具有public
可見性並且沒有[XmlIgnore]
標記的東西序列化。
我會假設你的一些類和成員都沒有標明public
,因此沒有得到了序列化。此外,XmlSerializer需要類有一個明確的,無參數的構造函數,將用於反序列化 - 所有的類都有嗎?當然,這個構造函數也需要是public
。
感謝馬克,當你指定的所有屬性都具有公共和具有默認構造函數。問題來了,我需要返回一個方法是基類,它由8個子類繼承,但我只有4個代理。所有繼承的類都是公共/默認構造函數,所有屬性都是公共的。所有使用DataContract裝飾的類以及使用DataMember進行裝飾的屬性均可使用。 – nRk 2009-11-11 05:48:37
如果您使用的是XmlSerializer,則DataContract/DataMember屬性在這裏無關緊要。你的8個子類是否在操作合同的'[KnownType]'屬性中定義的某個地方?我會認爲只有那些具體提到的作爲操作中的參數,或通過已知類型的屬性,將被序列化 – 2009-11-11 06:18:46
感謝您的幫助。 對不起,我忘了提及,在基類中我添加了屬性[KnownType(typeof(childclass))],我爲每個子類添加了8個屬性。 – nRk 2009-11-11 06:21:49
- 1. WCF無法生成客戶端代理
- 2. Delphi客戶端使用的WCF中生成的WSDL
- 3. 從android wsdl客戶端代碼生成
- 4. netbeans wsdl客戶端代碼生成
- 5. 向生成的WCF客戶端代理代碼添加方法
- 6. 爲Java中的WCF Web服務生成代理客戶端
- 7. 當使用maxOccurs屬性時,.NET自動生成的WSDL客戶端不處理抽象類型
- 8. WCF wrap代理客戶端
- 9. Metro客戶端使用WCF wsdl,未設置響應對象的屬性
- 10. 用於ASP .NET客戶端的WCF客戶端代理
- 11. 如何防止在WCF客戶端中生成「指定」屬性?
- 12. ReST webservice客戶端 - 從WSDL生成還是不生成?
- 13. 任何用於渠道管理的WCF客戶端代理生成器?
- 14. 使用SOAP客戶端使用動態代理來使用WSDL
- 15. 鑑於wsdl將使用不同的方法生成webservice客戶端生成不同的代碼?
- 16. 從WSDL生成的WCF代理,代理方法返回null
- 17. 客戶端上的代理WCF嚮導
- 18. WSDL生成的代理類
- 19. 生成的WCF數據服務客戶端的System.ServiceModel配置節
- 20. 如何使用憑據設置代理以生成WCF客戶端?
- 21. 數據成員訂單從wcf客戶端代理生成的類中丟失
- 22. SvcUtil工具客戶端代理不產生抽象類(WCF)
- 23. 使用本地WSDL文件生成Metro客戶端
- 24. 如何利用從WSDL生成的Web服務客戶端?
- 25. WCF和WSDL的代碼生成
- 26. 由clientgen生成的webservices客戶端代碼不能tro解析wsdl
- 27. WCF不會生成屬性
- 28. WCF客戶端/服務器配置不匹配
- 29. 使用svcutil爲客戶端代理生成xsd文件
- 30. 使用Jax生成代理Web服務客戶端時出錯
感謝Darin,我按照你的指示做了,它很有效。 :) – nRk 2009-11-11 08:48:25