ReferenceLoopHandling.忽略在WebApi Global.asax中不工作

本文关键字:asax 工作 Global WebApi ReferenceLoopHandling | 更新日期: 2023-09-27 18:19:20

我有一个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);

得到self refloops错误。现在在我的DB上下文中,我有:

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

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

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

然而,我仍然得到错误;有什么办法解决这个问题吗?

ReferenceLoopHandling.忽略在WebApi Global.asax中不工作

尝试添加

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