2009-11-11 115 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; } 
} 
相关问题