500大型JSON对象的内部服务器错误

500大型JSON对象的内部服务器错误,json,Json,我有一个网站,显示数据库中的数据列表。我注意到浏览器报告了500个内部服务器错误,但只有一个案例。这里是控制器方法 [AcceptVerbs(HttpVerbs.Post)] public JsonResult GetTouches(FormCollection collection) { try { List<p_SiteTouchSummary> pSiteTouchSummarys = ptsRep

我有一个网站,显示数据库中的数据列表。我注意到浏览器报告了500个内部服务器错误,但只有一个案例。这里是控制器方法

    [AcceptVerbs(HttpVerbs.Post)]
    public JsonResult GetTouches(FormCollection collection)
    {
        try
        {
            List<p_SiteTouchSummary> pSiteTouchSummarys = ptsRepository.GetPSiteTouchSummarys().ToList();

            return Json(new { wasSuccess = true, pSiteTouchSummarys });
        }
        catch (Exception ex)
        {
            Log.Error(ex, Request.Path, UserHelper.GetEmployeeLogin());
            return Json(new { wasSuccess = false, message = "Error - Search failed" });
        }
    }
[AcceptVerbs(HttpVerbs.Post)]
公共JsonResult GetTouches(FormCollection集合)
{
尝试
{
List pSiteTouchSummarys=ptsRepository.GetPSiteTouchSummarys().ToList();
返回Json(新的{wassucture=true,psitetouchummarys});
}
捕获(例外情况除外)
{
Log.Error(例如,Request.Path,UserHelper.GetEmployeeLogin());
返回Json(新的{wasSuccess=false,message=“Error-Search failed”});
}
}
在调试过程中,我发现它会返回,存在该方法,然后再也不会返回调用它的javascript文件。浏览器只需要大约1秒就可以报告500错误,而且它不一致,所以我认为这不是超时

另外,我用Take语句修改了返回的列表,它在150时有效,但在200时无效。如果我跳过(150)步,拿(50)步也行。似乎有200个条目在某种程度上破坏了它,但它并没有报告它太大而无法反序列化

有人知道发生了什么事情以及修复它的好方法吗?

Status 500=“Internal Server Error”。这是一个catchall错误,服务器应该给你一个合理的答复,但没有。例如,如果您的服务器代码抛出一个异常,而该异常在其他情况下无法处理,则服务器可能会通过将状态500返回给调用方来处理该异常


解决办法:1。向负责服务器代码的人员投诉。2.服务器人员可能会准确地告诉您是什么触发了错误,因此您可以避免它。3.它们可能不会给您任何有用的信息,因此您可以以一种您认为不会保证状态500错误的方式更改请求,如果您仍然收到一个请求,则重复请求,请求更少的数据

JsonResult类确实有一个属性(maxJsonLength),请尝试更改它:

    var jsonResult = Json(dataModel,
    JsonRequestBehavior.AllowGet);
    jsonResult.maxJsonLength = int.MaxValue;
    return jsonResult;


查看服务器的错误日志,了解有关500的详细信息。可能内存不足,可能超出了最大运行时间。。。。你看了才知道。
<appSettings>
  <add key="aspnet:MaxJsonDeserializerMembers" value="150000" />
</appSettings>