在ASP.NET Core中检测到自引用循环

时间:2016-01-12 20:48:44

标签: json.net asp.net-core asp.net-core-mvc

当我尝试使用ASP.NET Core Newsoft JSON.NET序列化某些域对象时,它会抛出异常,因为它正在检测自引用循环。

在ASP.NET 4中,我们过去常常以这种方式修复它: JSON.NET Error Self referencing loop detected for type

我们如何在ASP.NET Core中解决这个问题?

1 个答案:

答案 0 :(得分:79)

与ASP.NET Core(以前的Asp.Net 5)相比,ASP.NET 4中处理自引用循环的方式没有区别。您在帖子中引用的问题中概述的原则仍然适用。但是,考虑到配置和引导应用程序的新方法,在ASP.NET Core中设置此属性显然略有不同:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().AddJsonOptions(options => {
        options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
        options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
    });
    services.AddEntityFramework().AddSqlServer().AddDbContext<IvoryPacketDbContext>(
        options => options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"])
    );
}