2009-10-22 60 views
1

我已經更新了一個現有的WCF應用程序來添加protobuf-net支持。 基本上,我已經:爲什麼我的WCF服務器使用protobuf-net返回空響應?

  • 加入的protobuf-net.dll(.NET 3.0)在含有我的所有數據對象集的引用。該組件是由我的服務器和我的客戶機都引用

  • [數據成員]由[數據成員(訂單= X)](使用增加整數爲x)更新

  • 我與ProtoBehavior所有OperationContracts屬性

    取代
  • 更新了我的服務引用

從客戶端,我在服務器上調用這個方法:

[OperationContract(IsOneWay = false), ProtoBehavior] 
ConnectionData Join(string userId, string Password); 

與ConnectionData被定義是這樣的:

[DataContract] 
public class ConnectionData 
{ 
    [DataMember(Order = 1)] 
    public ConnectionStatusEnum ConnectionStatus; // this is a normal enum with five elements 

    // ..... 

    [DataMember(Order = 5)] 
    public bool MustChangePassword; 
} 

現在,這裏發生了什麼事:

  • 如果我調試服務器,我看到一個ConnectionData對象正確初始化並返回在加入方法

  • 如果我調試客戶端,我看到從我的加入調用返回空對象

  • 我已經啓用WCF跟蹤到最高的詳細程度,沒有什麼吸引了我的服務器的日誌眼球,但在客戶端日誌文件我已經看到了這個警告消息:

System.Runtime .Serialization.ElementIgnored
無法識別的元素 在 反序列化中遇到的XML中被忽略。
http://tempuri.org/:proto

我聞了聞我的網絡TRAFIC,我不怪protobuf網不能夠反序列化這樣的:

<s:Body><JoinResponse xmlns="http://tempuri.org/"><proto/></JoinResponse></s:Body> 

我怎樣才能進一步解決這個問題,讓protobuf-net正確地序列化我的消息?


我使用protobuf網R275

+0

基於配置的支持現在存在(根據您的請求):http://marcgravell.blogspot.com/2009/11/controlling-wcf-protobuf-net-at.html – 2009-11-11 17:44:35

回答

0

抱歉耽擱 - 工作時間等做兩端知道這種變化?不幸的是,WCF集成與客戶端生成的「mex」代理不能很好地發揮作用,但對於程序集共享來說工作正常。

或者,有一些工作正在使用可以在配置中指定的端點行爲;這不是100%,但應該很快 - 並允許WCF透明地使用protobuf-net,而不需要服務合同的中間人(儘管成員仍然需要知道它,或者通過[ProtoMember(n)]等或[DataMember(Order=n)],

+0

Hi Marc;謝謝你的快速回答。共享程序集(這是迄今爲止唯一修改的程序集),客戶機和服務器都在一個.sln中,並且都引用共享程序集項目。這是否回答你的問題? – Brann 2009-10-23 16:27:18

+0

重新app.config支持,如果我理解正確,那肯定會是一個非常好的補充,因爲它可以爲客戶端提供一個Soap和一個protobuf服務,並提供一個服務定義。 – Brann 2009-10-23 16:29:08

+0

它確實......我會試着把上面的東西放到一些東西上去試圖重現它。 – 2009-10-23 18:55:31

0

我一直在做一些這方面的工作,我懷疑的問題是,你有一個服務引用(無論是通過IDE或通過SvcUtil工具),它即使它重新使用共享數據合同,導致合同界面重複(並且丟失行爲屬性,使其損壞)。

選項:

  • 不使用服務的引用(使用直接信道,或亞類ClientBase<T>
  • 使用新endpoint configuration options
  • 劈生成的接口以包括行爲(將產生維修問題)

如果您不熟悉它們,我計劃在接下來的幾天爲第一個選項撰寫博客條目。

+0

@Marc:感謝您的支持和時間。我會嘗試.config的東西,並希望證實你解決了問題:) – Brann 2009-11-12 09:18:05

相關問題