문제
REST WCF 서비스에서 일반적인 ICollection을 반환하려고합니다. 다음이 가능해야합니까?
[ServiceContract]
public class WebConfigurationManager {
[WebGet]
[OperationContract]
public ICollection<string> GetStrings() {
return new string[] { "A", "B", "C" };
}
}
웹 브라우저 에서이 작업을 실행하려고하면 오류가 발생합니다. 내 WCF 추적을 살펴보면 다음과 같습니다.
'System.String []'(작동 'getStrings', 계약 'WebConfigurationManager')의 매개 변수를 직렬화 할 수 없습니다. 메소드에서 정확한 유형 'System.Collections.generic.icollection`1 [System.String]' ' 서명이며 알려진 유형 컬렉션에 없습니다. 매개 변수를 직렬화하려면 ServiceKnownTyPeatTribute를 사용하여 작동에 대한 알려진 유형 컬렉션에 유형을 추가하십시오.
해결책
이것은 작동해야합니다 :
[ServiceKnownType(typeof(string[]))]
[ServiceContract]
public class WebConfigurationManager {
[WebGet]
[OperationContract]
public ICollection<string> GetStrings() {
return new string[] { "A", "B", "C" };
}
}
다른 팁
앤드류는 나를 올바른 방향으로 지적했다. 답은 추가하는 것입니다
[ServiceKnownType(typeof(string[]))]
servicecontract] 속성 위.
제휴하지 않습니다 StackOverflow