2016-04-26 63 views
3

我正在使用的這個項目用於爲每個存儲庫方法創建一個新的DbContext(這意味着每個請求都有創建的任意數量的dbcontexts)在每個Web請求上。當設置爲ReferenceLoopHandling.Ignore時,json.net不會忽略循環引用

我已經解決了每個請求只有一個上下文,但是一些序列化會失靈並且出現內存不足異常。查看序列化的數據,Json.Net完全忽略了循環引用處理的枚舉值ReferenceLoopHandling.Ignore。請注意,當我將它設置爲ReferenceLoopHandling.Error時,我將立即在自引用對象上收到異常。

在代理和延遲加載啓用和禁用時會發生這種情況。

完整的用於JsonSerializer設置列表:

DateFormatHandling = DateFormatHandling.IsoDateFormat, DateTimeZoneHandling = DateTimeZoneHandling.Local, Formatting = Formatting.None, ReferenceLoopHandling = ReferenceLoopHandling.Ignore, NullValueHandling = NullValueHandling.Include

+1

您是否可以編輯您的問題以包含證明問題的[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)?這會讓別人更容易幫助你。 –

回答

3

嘗試設置SerializerSettings.PreserveReferencesHandlingPreserveReferencesHandling.Objects,使現有對象引用使用引用執行而不是重新序列化對象。

+0

我知道這是舊的,但現在也影響了我。這個建議會阻止錯誤的發生,但會導致您必須以完全不同的方式閱讀您的JSON。爲什麼對象不會按照它所說的去做? – ewahner

相關問題