2010-03-23 107 views
1

源代碼錯誤服務的錯誤消息。需要從引用類型中排除此類型。WCF與共享類

現在我試圖取消選中重用引用類型,我可以讓我的項目編譯。但是當從客戶端發送一個集合時,它從來沒有收到或者無法在服務器端反序列化。

我真的需要這個工作。任何幫助將不勝感激,全部源代碼由谷歌代碼提供。

+0

任何人都可以幫我解決這個問題嗎?我假設它必須處理被丟棄的protobuf屬性。我一直試圖找出這個錯誤數週。 – 2010-04-04 22:07:33

回答

0

我沒有下載源代碼並構建它,但是這可能是因爲你在這個類中缺少DataContract? Sui類具有Sua類型的屬性作爲DataMember,所以它也需要序列化。它看起來像你目前的代碼

[ProtoContract, ] 
[KnownType(typeof(ObservableCollection<LocaleString>))] 
public class Sua 
+0

丟失datacontract是一個簡單的錯誤,當我做了一個搜索/替換來刪除XML屬性,它在那裏。我修復了它並更新了服務,錯誤仍然相同。 – 2010-03-24 12:46:27

0

我需要做什麼來重現此錯誤?第一點(關於匹配數據合同)聽起來像WCF對你不是很滿意,這表明你有兩個相似的(但不同的)合同「在場」。如果你正在重新使用共享庫中的類型,這應該不成問題。

如果結束了不含類型(以及具有客戶端和服務器不同的型號),然後它可以得到一個 tricker,因爲「MEX」不保證該職位將保持不變(和indde,他們經常改變) - 但你可以通過使用幾個[ProtoPartialMember(...)]類型(不漂亮,但它的工作原理)來解決這個問題。

但我強調 - 這裏的主要問題似乎是WCF;如果不高興,這樣的代碼不codegen /編譯等,那麼我的手是相當捆綁(因爲它不會像protobuf網談話)。

+0

唯一的辦法是下載源代碼,編譯基礎和管理項目,運行管理exe文件,我把它放在一個循環中,以便在測試時更新服務更容易(它不會做任何事情,除非在你的循環中運行機)。然後更新SevenUpdate的服務,您將看到警告消息。 [code] void AddApp(Sua app); void SetUpdates(Collection appUpdates); ..等等[/ code] 我開始弄錯了。這些類位於共享的SevenUpdate.Base中。它可能是protobuf的屬性被WCF丟棄導致不匹配? – 2010-03-24 12:52:06

+0

它工作正常,我試圖發送類到服務和服務返回結果。 (雙面合同),可能是我錯誤地實施了它。在此之前,我只是序列化一個臨時文件,並讓服務反序列化它,這是我想通過使用已有的WCF服務避免的。 – 2010-03-24 12:53:55