WCF Rest客户端和传输编码分块:是否支持?

时间:2009-11-11 01:34:46

标签: wcf rest chunked-encoding

我有一个如下定义的数据合同:

[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);

当我对主机进行休息调用时,我获取数据,但只填充了Id和Name属性。 Description属性为null!我通过继承ClientBase来创建频道。

有人知道为什么WCF序列化Id和Name而不是Description吗?传输编码在主机响应中设置为“Chunked”,我想知道这与它有什么关系吗?

1 个答案:

答案 0 :(得分:2)

我发现有些属性没有被序列化,因为响应xml的元素顺序不同。解决方案是在datacontract上明确设置序列化顺序。这是我添加订单属性后的datacontract:

 [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; }
}