2009-11-11 114 views
1

我有一個datacontract定義如下:WCF Rest客戶端和傳輸編碼分塊:是否支持?

[DataContract(Namespace="",Name="community")] 
public class Community { 

    [DataMember(Name="id")] 
    public int Id{get; set;} 

    [DataMember(Name="name")] 
    public string Name { get; set; } 

    [DataMember(Name="description")] 
    public string Description { get; set; } 
} 

和服務合同是這樣的:

[OperationContract] 
    [WebGet(
       BodyStyle = WebMessageBodyStyle.Bare, 
       ResponseFormat = WebMessageFormat.Xml, 
       UriTemplate = "{id}" 
)] 
    Community GetCommunity(string id); 

當我做休息調用主機,我得到的數據,但只有編號和名稱屬性被填充。 Description屬性爲null!我通過從ClientBase繼承來創建通道。

有誰知道爲什麼WCF序列化ID和名稱而不是描述?傳輸編碼被設置爲「分塊」來自主機的響應,我想知道這與它有什麼關係?

回答

2

我發現一些屬性沒有被序列化,因爲響應xml的元素順序不同。解決方案是顯式設置數據合同的序列化順序。以下是我添加訂單屬性後的數據合同:

[DataContract(Namespace="",Name="community")] 
public class Community 
{ 
    [DataMember(Name = "name",Order=2)] 
    public string Name { get; set; } 

    [DataMember(Name="id",Order = 1)] 
    public int Id{get; set;} 

    [DataMember(Name="description",Order=3)] 
    public string Description { get; set; } 
} 
相關問題