ReferenceLoopHandling.Ignore无法在WebApi Global.asax中工作

Mat*_*ynn 11 c# asp.net-mvc json.net asp.net-web-api

我有一个API端点,它返回一个循环错误(因为它链接一个循环返回的连接类),所以例如

class A
{
     virtual ClassAB;
}

class B
{
     virtual ClassAB;
}

class AB
{
     virtual ClassA;
     virtual ClassB;
}    
Run Code Online (Sandbox Code Playgroud)

在API GET中,我需要从ClassA的角度返回ClassB的细节(反之亦然,在ClassB GET中).

当我得到时,我做了以下事情:

IQueryable<ClassA> results = _dbset
    .Include(x => x.ClassAB)
    .Include(x => x.ClassAB.Select(y => y.ClassB))
    .AsExpandable()
    .Where(predicate)
    .OrderBy(x => x.ID);
Run Code Online (Sandbox Code Playgroud)

所以我得到自我循环错误.现在在我的数据库上下文中我有:

Configuration.ProxyCreationEnabled = false;
Configuration.LazyLoadingEnabled = false;
Run Code Online (Sandbox Code Playgroud)

在我的Global.asax protected void Application_Start()身上:

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
Run Code Online (Sandbox Code Playgroud)

但是,我仍然得到错误; 任何想法如何解决这个问题?

Cra*_*aig 0

尝试添加

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling = PreserveReferencesHandling.None;