2017-11-23 31 views
0

とWCFサービスは、私がデザインは解決済み:RESTfulなAPIと循環参照の問題

[DataContract(IsReference = true)] 
    public class Entity : IEntity 
    { 
     ..... 
    } 

を持つオブジェクトを持って、私は本当のIsReference =を設定した場合、私はJSON形式でのRESTfulなことでWCFサービスを消費する場合は、私が持っています例外はDataContractJsonSerializerがIsReferenceプロパティをサポートしていないためです。

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サーバーを使用していますので、私はHttpConfigurationをconfigコンどうやって? –

関連する問題