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

时间:2015-10-26 14:01:54

标签: c# asp.net-mvc asp.net-web-api json.net

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

class A
{
     virtual ClassAB;
}

class B
{
     virtual ClassAB;
}

class AB
{
     virtual ClassA;
     virtual ClassB;
}    

在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);

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

Configuration.ProxyCreationEnabled = false;
Configuration.LazyLoadingEnabled = false;

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

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;

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

1 个答案:

答案 0 :(得分:0)

尝试添加

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