设置为ReferenceLoopHandling.Ignore时,json.net不会忽略循环引用

时间:2016-04-26 09:58:50

标签: c# json entity-framework serialization json.net

我正在使用的这个项目曾经为每个存储库方法创建了一个新的DbContext(这意味着每个请求都创建了任意数量的dbcontexts)。

我已经解决了每个请求只有一个上下文但是一些序列化变得混乱并且出现内存不足的异常。查看序列化数据,Json.Net完全忽略循环引用处理的ReferenceLoopHandling.Ignore枚举值。请注意,当我将其设置为ReferenceLoopHandling.Error时,我将立即在自引用对象上获得异常。

启用和禁用代理和延迟加载都会发生这种情况。

用于JsonSerializer的完整设置列表:

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

1 个答案:

答案 0 :(得分:3)

尝试将SerializerSettings.PreserveReferencesHandling设置为or,以便使用引用执行对现有对象的引用,而不是重新序列化对象。