JSON.Net による自己参照ループ例外の防止
Route オブジェクトのリストをデータ サービスからサービスに転送するプロセス中ASP.Net MVC ビューで、「自己参照ループが検出されました」例外が発生しました。 ReferenceLoopHandling.Ignore で例外を抑制すると、一時的にエラーが発生しなくなりますが、リストがビューに渡されないという問題は解決されません。
例外の根本原因は、固有の自己参照構造にあります。データモデル内に存在します。 Route や Lot などのエンティティは相互の関係を維持し、循環参照を作成する場合があります。 JSON.Net がそのような構造をシリアル化しようとすると、無限ループに陥って例外が発生する可能性があります。
この問題を回避し、リストのシームレスなシリアル化を有効にするには、自動追跡を無効にする必要があります。データ コンテキストでのエンティティとプロキシの作成。 DbContext クラスのコンストラクター内に、次の行を追加します。
this.Configuration.LazyLoadingEnabled = false; this.Configuration.ProxyCreationEnabled = false;
これらの設定は、エンティティを積極的に読み込み、プロキシ オブジェクトの作成を回避するように Entity Framework に指示します。これにより、循環参照が効果的に中断され、例外が発生しなくなります。その結果、JSON.Net はリストを正常にシリアル化し、データをビューに転送できるようになります。
以上がJSON.Net でデータをシリアル化するときに「自己参照ループが検出されました」例外を防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。