WCF Rest客户端和传输编码分块:是否支持?
问题描述:
我有一个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和名称而不是描述?传输编码被设置为“分块”来自主机的响应,我想知道这与它有什么关系?
答
我发现一些属性没有被序列化,因为响应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; }
}