ASP.NET MVC发送内部状态代码为500的Json对象
让我们首先看看代码块 用于发送json数据的控制器函数ASP.NET MVC发送内部状态代码为500的Json对象,asp.net,json,asp.net-mvc,Asp.net,Json,Asp.net Mvc,让我们首先看看代码块 用于发送json数据的控制器函数 [HttpGet] public ActionResult LoadCourseForDataTable() { using (var dd = new DBContext()) { var data = dd.Courses.ToList(); return Json(new {data = data}, JsonRequestBehavior.AllowGet); }
[HttpGet]
public ActionResult LoadCourseForDataTable()
{
using (var dd = new DBContext())
{
var data = dd.Courses.ToList();
return Json(new {data = data}, JsonRequestBehavior.AllowGet);
}
}
此块用于从上述代码块获取json数据
<script>
$(document).ready(function () {
$('#CourseTable').DataTable({
"ajax": {
"url": "/Course/LoadCourseForDataTable",
"type": "GET",
"datatype": "json",
},
"columns": [
{ "data": "CourseID", "autoWidth": true },
{ "data": "Title", "autoWidth": true },
{ "data": "Credits", "autoWidth": true },
{ "data": "DepartmentID", "autoWidth": true },
]
});
});
</script>
$(文档).ready(函数(){
$('#CourseTable')。数据表({
“ajax”:{
“url”:“/Course/LoadCourseForDataTable”,
“类型”:“获取”,
“数据类型”:“json”,
},
“栏目”:[
{“data”:“CourseID”,“autoWidth”:true},
{“数据”:“标题”,“自动宽度”:true},
{“data”:“Credits”,“autoWidth”:true},
{“数据”:“部门ID”,“自动宽度”:true},
]
});
});
必须加载到客户机服务器上的所有LIB都已完全完成并正确加载。他们在这个问题上不是问题
服务器响应为500内部错误
以下是详细的例外情况
ObjectContext实例已被释放,不能再用于需要连接的操作
我认为一切都是真的,但我有一个有趣的问题。你能帮助我吗?谢谢你 这很可能是因为您启用了延迟加载。在处理DBContext时,您正在关闭与数据库的连接,以便在关闭using语句后它无法加载任何相关实体 问题是,using语句中的dispose是在传递方法的结果之前运行的。当JsonResult尝试序列化您的课程时,他们将看到有一个延迟加载的属性,并尝试加载它。但此时,与数据库的连接已关闭
我严格反对web场景中的延迟加载。出于这个原因和许多其他原因。因此,我给你的唯一建议是禁用延迟加载,如果你想包含相关实体,你应该急切地获取它们。
500内部服务器错误)
意味着服务器上的代码抛出异常。使用浏览器工具“网络”选项卡检查响应,该响应将向您提供错误的详细信息。服务器也将提供相当详细的错误消息。错误是什么?编辑了问题。请检查它。使用语句删除,或将return Json()
移到后面。尝试使用带有选择
方法的投影只返回所需字段。还要确保课程
的属性是虚拟的。我认为这个问题是重复的,但你的回答很清楚,我感谢你。