두 개의 클래스가있는 WCF를 DataContracts로 개발하고 있습니다. 그 중 하나는 JSON으로 객체를 관리하는 나 자신에 의해 개발 된 데이터 구조입니다. 이름은 JSON입니다. 다른 하나는 내 WebService가 수신하는 사용자 정의 된 객체입니다. 이름은 배출입니다. 세 가지 방법이 있습니다. 하나는 정책 작성을위한 것이고 다른 하나는 정책을 검색하고 마지막 하나는 JSON 클래스를 사용하여 역동적 인 방식으로 카탈로그를 참조합니다. 메시지를 역 직렬화하는 동안 "포맷터는 예외가 발생했습니다 List 유형의 속성 이 DataContract 클래스에서 실패합니다.
: 매개 변수를 역 직렬화하는 동안 오류가 발생했습니다 ...의 InnerException 메시지가 '1 개 행 위치에서 오류가 발생했습니다 내 문제는이 같은 오류 메시지가 내 온다 요소 ... 에는 ' http://schemas.microsoft.com/2003/10/Serialization/Arrays:ArrayOfanyType' 데이터 계약의 데이터가 포함되어 있습니다. 디시리얼라이저에는이 계약서에 매핑되는 형식에 대한 지식이 없습니다. 알려진 유형 목록에 'ArrayOfanyType'에 해당하는 유형 추가 - for 예 : KnownTypeAttribute 특성을 사용하거나 DataContractSerializer에 전달 된 알려진 형식 목록에 추가하여.자세한 내용은 InnerException을 참조하십시오. "
답변을 찾다가 내 문제의 원인이 제네릭 객체 목록 인 JSON 클래스의 속성임을 알게되었습니다. 내 클라이언트에서이 속성을 필요로하는 객체를 초기화해야하므로이 목록에 문자열이나 다른 객체 목록이 포함될 수 있으므로 이러한 종류의 항목이 필요합니다.
나는 어떤 성공 KnownTypes의 종류를 사용하려했지만 내가 뭔가 잘못하고 있어요 모르겠어요
[KnownType(typeof(Object[]))]
[KnownType(typeof(List<List<Object>>))]
[KnownType(typeof(List<object>))]
[KnownType(typeof(List<string>))]
[KnownType(typeof(List<List<string>>))]
이 말을하는 것이 중요하다 만약 내가 SET값 속성 내부값 속성은 표시되지 않지만 모든 것이 클라이언트 측의 JSON 클래스에서도 잘됩니다. 내 코드의 파쇄를 첨부 :
public class JSON
{
#region
[DataMember]
public List<Object> value { get; set; } This cause the problem
//public List<Object> value { get; internal set; } This allow everything happens fine
[DataMember]
public List<string> errors { get; set; }
[DataMember]
public Regex pattern { get; internal set; }
[DataMember]
internal Regex commaPattern { get; private set; }
#endregion
}
[ServiceContract(Namespace = "http://EmissionService")]
public interface IEmissionService
{
[OperationContract]
[WebGet(UriTemplate = "Emissions/getCatalog", ResponseFormat = WebMessageFormat.Json)]
string getCatalog(JSON request);
[OperationContract]
[WebInvoke(UriTemplate = "Emissions/createPolicy", ResponseFormat = WebMessageFormat.Json, Method = "POST")]
string createPolicy(Emission emissionRequest);
[OperationContract]
[WebGet(UriTemplate = "Emissions/getPolicy", ResponseFormat = WebMessageFormat.Json)]
JSON getPolicy(JSON request);
}
을 난 당신이 정말 나를 도울 수 있기를 바랍니다. 덕분에 조언을!
'[KnownType (typeof (List
음 ... 대문자가있는 객체를 의미합니까? 사실 나는 둘 다 시도했다. – user3018905