このプロジェクトでは、各リポジトリメソッドごとに新しいDbContextを作成することがありました(すべての要求に任意の数のdbcontextが作成されました)各ウェブリクエストでReferenceLoopHandling.Ignoreに設定すると、json.netは循環参照を無視しません。
私はリクエストごとに1つのコンテキストしか持たないが、シリアライズのいくつかはうんざりしてメモリ不足の例外が発生するということを解決しました。シリアル化されたデータを見ると、Json.Netは円参照処理の列挙値ReferenceLoopHandling.Ignore
を完全に無視しています。私がReferenceLoopHandling.Error
に設定すると、自己参照オブジェクトですぐに例外が発生することに注意してください。
これは、プロキシと遅延ロードの両方が有効で無効になっている場合に発生します。
JsonSerializerのために使用される設定の全リスト:既存のオブジェクトへの参照は、参照の代わりに、再シリアライズオブジェクトを使用して実行されるように
DateFormatHandling = DateFormatHandling.IsoDateFormat, DateTimeZoneHandling = DateTimeZoneHandling.Local, Formatting = Formatting.None, ReferenceLoopHandling = ReferenceLoopHandling.Ignore, NullValueHandling = NullValueHandling.Include
問題を示す[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を含めるように質問を編集できますか?これにより、誰かがあなたを助けるのがずっと楽になります。 –