2011-02-07 2 views
1

이 가능 (제공은 DataContractAttribute 및 DataMemberAttribute와 사용자 정의 클래스)를 WCF 3.5 서비스에서이 같은 방법 서명을하는 것입니다 :WCF RESTful 서비스에서 json 형식의 IList를 반환하는 방법은 무엇입니까?

[OperationContract] 
[WebGet(UriTemplate = "GetOffers", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)] 
IList<Offer> GetOffers(); 

나는 웹 브라우저에서 해당 URL을 입력하면, 내가 얻을 수 있기 때문에 직렬화 오류 (나는 IList에 Serializable 특성이 없기 때문에 JSON 직렬 변환기가 Serialize 할 수 없기 때문에 생각한다).

해결 방법은 이와 같은 방법 서명 사용하는 것이다 :

[OperationContract] 
[WebGet(UriTemplate = "GetOffers", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)] 
List<Offer> GetOffers(); 

같은 직렬 출력 (간단한 JSON 배열)의 결과를, 그러나 첫 번째는 XML로 작동하기 때문에, I는 경우 궁금 동일한 서명을 유지하면서 json에서 작동하게하는 방법이있었습니다.

편집 : XML 직렬화에서도 작동하지 않으므로 정상적인 것으로 보입니다. 질문은 여전히 ​​유효합니다.이 서명을 유지하고 serializer 동작을 변경하여이 작업을 수행 할 수 있습니까? 방법?

답변

1

알려진 유형 목록에 사용하는 하드 모음 유형을 추가해야한다고 생각합니다. 개념적 설명은 http://msdn.microsoft.com/en-us/library/ms730167.aspx을 참조하십시오. 예제는 http://msdn.microsoft.com/en-us/library/ms751512.aspx을 참조하십시오. 매우 잘 작성된 MSDN Magazine 기사는 http://msdn.microsoft.com/en-us/magazine/gg598929.aspx을 참조하십시오.

또한 상단의 두 답변을 참조하십시오. How do you configure WCF known types programmatically?