当我在控制器中"包含"时,.Net Core WebAPI连接重置

Rah*_*ani 3 c# asp.net-core asp.net-core-webapi

我有一个带有.Net Core的新项目.这是一个WebAPI项目.我的模型有一个单独的项目.

在WebAPI项目中,在控制器中,我有这样的东西:

    // GET: api/questions
    [HttpGet]
    public IEnumerable<Question> GetQuestions()
    {
        return _context.Questions
            .Include( i => i.QuestionType );
    }
Run Code Online (Sandbox Code Playgroud)

当我调用http://localhost:55555/api/questios/它时只返回第一条记录,然后出现此错误消息:Recv failure:Connection was reset

如果我删除Include部件并返回_context.Questions,它工作得很好!

我的代码有什么问题?

Rah*_*ani 10

我找到了答案.谢谢所有帮助过的人.

我根据加载相关数据添加了json选项

如果您使用的是ASP.NET Core,则可以将Json.NET配置为忽略它在对象图中找到的循环.这是在Startup.cs中的ConfigureServices(...)方法中完成的.

            services.AddMvc()
              .AddJsonOptions(
                    options => options.SerializerSettings.ReferenceLoopHandling
                        = Newtonsoft.Json.ReferenceLoopHandling.Ignore );
Run Code Online (Sandbox Code Playgroud)

  • 我发现这解决了我的问题,但后来我找到了另一种我认为更喜欢的方式.我将`[JsonIgnore]`装饰器添加到我不想序列化的属性中,并且不再需要担心任何循环.我怀疑这通常是从孩子回到其父母的参考.有关更多详细信息,请参阅此答案:/sf/answers/829602301/ (2认同)