返回 JSON 时的 C# 递归限制

标签 c# asp.net-mvc-3

我最近遇到了一个恼人的问题。我将在这里简化我的数据模型,但原理是一样的。我有一个“用户”类。在那个类中,我有一个属性,它是用户拥有的对象列表。我也有这个类“对象”。因为每个“对象”都有一个所有者,所以它有一个“用户”类型的属性,该属性链接到它的所有者。现在,我要做的基本上就是这个

return Json(myUser,JsonRequestBehavior.AllowGet);

当我加载页面时,大约需要 30 秒,然后我收到错误“RecursionLimit exceeded”。

我想这是因为对象相互链接。现在我的问题是,我如何告诉“Json”它不应该比 1 级对象更深才能避免这种情况?

最佳答案

myUser 可能是 EntityFramework 生成的类型。

当您返回 Json 时,框架将准备每个属性,本质上是触发 SQL 命令以延迟加载所有数据。

相反,您应该准备一个具有未附加到 EntityFramework 的具体属性的 ViewModel 类,并准备该对象到您想要的深度。

关于返回 JSON 时的 C# 递归限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10678691/

相关文章:

c# - 如何使用asp.net C#计算文件上传和下载时间

asp.net - 在服务器上找不到 System.Web.Helpers,怎么了?

c# - 无法加载文件或程序集 ICSharpCode.SharpZipLib ...使用 nuGet 包 ExcelDataReader 时

c# - 如何在标签中创建图形对象

c# - 只要窗体处于事件状态,如何运行后台线程?

asp.net - 如何在aspx页面内显示pdf?

javascript - ASP.NET MVC RAZOR ActionLink 点击

c# - 使用反射和枚举来进行 MVC 应用程序访问的逻辑控制是否安全?

c# - 使用命名管道 WCF 服务时出现通信对象错误

c# - FormsAuthenticationTicket 过期