我有一个网站,显示数据库中的数据列表。我注意到浏览器报告了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" });
}
}
在调试中我发现它会到达返回,存在方法,然后永远不会返回到调用它的javascript文件。浏览器只需要大约1秒的时间来报告500错误,并且它不一致,所以我认为它不会超时。
此外,我使用Take语句修改了返回的列表,它在150处工作,但在200处不工作。如果我执行Skip(150).Take(50)也可以工作。似乎有大约200个条目以某种方式打破它,但它没有报告它太大而不能反序列化。
任何人都知道发生了什么事并找到解决问题的好方法吗?
答案 0 :(得分:0)
状态500 =“内部服务器错误”。对于服务器应该给你合理答复但不提供合理答复的任何内容,这都是一个错误的错误。例如,如果您的服务器代码抛出了一个无法处理的异常,服务器可能会通过将状态500返回给调用者来处理它。
解决方案:1。向负责服务器代码的人员投诉。 2.服务器人员可能能够准确地告诉您触发错误的原因,因此您可以避免错误。 3.他们可能不会给你任何有用的东西,所以你以你认为保证没有状态500错误的方式改变你的请求,如果你仍然得到一个然后重复请求请求更少的数据。
答案 1 :(得分:0)
JsonResult类确实具有属性(maxJsonLength),请尝试对其进行更改:
var jsonResult = Json(dataModel,
JsonRequestBehavior.AllowGet);
jsonResult.maxJsonLength = int.MaxValue;
return jsonResult;
或
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="150000" />
</appSettings>