所以我在玩asp.net 5中的web api。在某个时候,我的应用程序停止工作,只显示“坏网关”IIS错误页(我在IIS Express中运行,按F5)。我花了一段时间才弄清楚问题所在-我在一个类中引入了一个循环引用我的一个web api方法返回,如下所示:

public class CircularParent
{
    public CircularChild Data;

    public CircularParent()
    {
        Data = new CircularChild(this);
    }
}

public class CircularChild
{
    public CircularParent Owner { get; set; }

    public CircularChild(CircularParent owner)
    {
        Owner = owner;
    }
}

结果是JsonSerializationException。我的问题不是如何解决,而是今后如何应对这样的局面。我怎么能处理这样一个例外?或者至少如何记录它或者只是在某个地方看到它记录下来?UseDeveloperExceptionPage()没有帮助。UseExceptionHandler(errorApp => errorApp.Run(...))也没有帮助,执行不会进入到errorApp.Run()中。调试器不会在异常处中断。所有我得到的IIS是相当不具信息性的“坏网关”页面。

最佳答案

尝试将最新版本的8.0.1-beta3中的Newtonsoft.Json添加到package.json中的依赖项,并使用

services.AddMvc()
    .AddJsonOptions(options => {
        options.SerializerSettings.ReferenceLoopHandling =
            Newtonsoft.Json.ReferenceLoopHandling.Ignore;
    });

有关详细信息,请参见the issue

07-24 17:10