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

Ner*_*roS 4 c# serialization json entity-framework json.net

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

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

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

用于 JsonSerializer 的完整设置列表:

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

Tob*_*s J 5

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

  • 我知道这很旧,但这现在也影响了我。此建议将阻止错误发生,但会导致您必须以完全不同的方式读取 JSON。为什么对象不按照它说的去做呢? (3认同)