2017-11-23 12 views
0

와 WCF 서비스는 내가 디자인의 객체가 DataContractJsonSerializer가 IsReference 속성을 지원하지 않으므로 예외입니다.해결 : 내가 JSON 형식과 평안한으로 WCF 서비스를 소비하는 경우</p> 나는 IsReference을 설정 <pre><code>[DataContract(IsReference = true)] public class Entity : IEntity { ..... } </code></pre> <p>= 사실, 내가이있을 것이다 평안한 API 및 순환 참조 문제

IsReference = true를 제거하면 Json과 함께 Restful 또는 WCF SOAP로 WCF 서비스를 사용하여 WCF 서비스를 사용할 때 순환 참조 문제가 발생합니다.

어떻게이 문제를 해결할 수 있습니까?

[업데이트]

나는 Newtonsoft JsonSerializer로 DataContractJsonSerializer를 대체 할 수있는 해결 방법을 발견했다. 이 문제를 해결할 것입니다. 가 표준 Microsoft JSON 시리얼 라이저는 그것을이 JSON 지원되는 시나리오를 지원하지 않는 것은 사실이지만

나는 https://itq.nl/replacing-wcf-datacontractjsonserializer-with-newtonsoft-jsonserializer/

답변

0

에서 문서를 따르십시오.

WebAPI 나머지 서버 :

이 역 직렬화하기 전에, 당신은 당신의 설정으로 아래의 해결을 첨부해야 할 수도 있습니다

settings.ContractResolver = new DynamicContractResolver(); 
    public class DynamicContractResolver : DefaultContractResolver 
    { 
     protected override JsonProperty CreateProperty(System.Reflection.MemberInfo member, MemberSerialization memberSerialization) 
     { 
      var r = base.CreateProperty(member, memberSerialization); 
      r.Ignored = false; 
      return r; 
     } 
    } 

그리고

이 같은 객체를 참조하는 직렬화 핸들 자체를 확인 클라이언트 :

JsonConvert.SerializeObject(theObject, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Serialize }) 

도덕적 : Micrososft JSON 시리얼 라이저.

+0

Restfull과 함께 WCF Server를 사용하고 있는데 HttpConfiguration을 어떻게 구성합니까? –