使用JSON.Net“检测到自我引用循环”异常

使用JSON.Net“检测到自我引用循环”异常

我有一些代码将一个Route对象列表发送到我的View(ASP.Net MVC):

public ActionResult getRouteFromPart(int partId){
    List<Route> routes = _routeService.GetRouteByPartType(partId);

    if (routes == null)
    {
        return this.AdvancedJsonResult(null, JsonRequestBehavior.AllowGet);
    }

    return this.AdvancedJsonResult(new
    {
        Routes = routes    }, JsonRequestBehavior.AllowGet);}

但我在AdvancedJsonResult班上得到一个例外:

if (Data != null){
    var settings = new JsonSerializerSettings
    {
        ContractResolver = new CamelCasePropertyNamesContractResolver()
    };

    string result = JsonConvert.SerializeObject(this.Data, this.Formatting, settings);
    response.Write(result);}

我已经尝试了“ReferenceLoopHanding.Ignore”技巧,它使异常静音,但列表仍未传递给视图。

当我改为routes单个对象而不是列表时,代码工作,所以我认为代码不喜欢使用列表。

我是这个项目的新手,所以我不知道如何解决这个问题,并使用List ...

编辑:这是完整的异常消息,它发生在该string result = JsonConvert...行上。

使用类型'System.Data.Entity.DynamicProxies.PartNumber_B135A5D16403B760C3591872ED4C98A25643FD10B51246A690C2F2D977973452'检测到自引用循环。路径'路线[0] .incomingLots [0] .partNumber.partType.partNumbers'。


四季花海
浏览 773回答 2
2回答

陪伴而非守候

我不喜欢这种答案,因为您正在关闭默认启用的EF6功能,这段代码可能会破坏程序的其他部分。你应该解释它的作用以及它有什么样的影响。&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP