我有一個使用類層次結構的WCF服務。基類BaseService只有基本信息(請參見圖),而我的繼承類具有擴展信息。 Service的一個屬性是枚舉。 BaseService具有DataContract屬性,KnownType屬性指向Service。帶類繼承的WCF服務
其中一個服務返回一個BaseService列表,但是當我調用它時,我從WCF得到一個錯誤。我已啓用日誌,並可以看到錯誤與未設置的服務中的枚舉相關。該服務沒有返回服務列表,而是返回BaseService列表,因此枚舉在上下文中不應相關。看起來WCF試圖返回一個Service列表,即使該方法返回一個BaseService列表。
錯誤消息是: 試圖序列化參數http://tempuri.org/:GetShallowServiceResult時發生錯誤。 InnerException消息是'枚舉值'0'對'MyService.ServiceTypeEnum'類型無效,無法序列化。
我想不通爲什麼會發生這種情況?
更新: 事實證明,我錯過了將構造函數更改爲使用BaseService類而不是繼承的Service類。 Web服務試圖序列化一些沒有設置的枚舉的情況。現在就像魅力一樣。
對你有好處! :-) – 2012-01-10 14:52:25