2009-11-11 4 views
1

아래에 정의 된대로 datacontract가 있습니다.WCF 나머지 클라이언트 및 전송 인코딩 청크 : 지원됩니까?

[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 및 이름 속성 만 가져옵니다. 채워집니다. 설명 속성이 null입니다! ClientBase에서 상속하여 채널을 만들고 있습니다.

누구도 WCF가 ID와 이름을 직렬화하는 이유를 알고 있습니까? Transfer Encoding은 호스트의 응답에서 '청크 (Chunked)'로 설정되어 있으며 그와 관련이 있는지 알고 싶습니다.

답변

2

응답 xml이 다른 순서로 요소를 가지고 있기 때문에 일부 속성이 직렬화되지 못하는 것으로 나타났습니다. 해결책은 datacontract에 직렬화 순서를 명시 적으로 설정하는 것이 었습니다. 다음은 order 속성을 추가 한 후 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; } 
} 
관련 문제