我已經更新了一個現有的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
基於配置的支持現在存在(根據您的請求):http://marcgravell.blogspot.com/2009/11/controlling-wcf-protobuf-net-at.html – 2009-11-11 17:44:35