由于 JSON 较大,Ajax 导致 500 Internal Server Error
Posted
技术标签:
【中文标题】由于 JSON 较大,Ajax 导致 500 Internal Server Error【英文标题】:Ajax results in 500 Internal Server Error because of large JSON 【发布时间】:2017-02-18 03:45:59 【问题描述】:我有以下代码
ajax 调用
$.ajax(
type: "POST",
dataType: "json",
async: false,
contentType: "application/json; charset=utf-8",
url: "Account/SomeFunc",
data: JSON.stringify(dataToSend),
success: function (res)
//some code
,
error: function (res, textStatus, errorThrown)
//some code
);
在服务器端
public ActionResult SomeFunc()
//some code
VeryBigObject result = getResult();
if (result == null)
return null;
var jsonResult = Json(result, JsonRequestBehavior.AllowGet);
jsonResult.MaxJsonLength = int.MaxValue;
return jsonResult;
结果变量可以很小,但有时它是一个非常大的对象。当对象足够小时,代码可以工作并激活 ajax 成功代码,但是当结果足够大时,代码会失败,并出现 500 内部服务器错误。 我不能把 MaxJsonLength 放得更大,因为它是一个 int 但有时我需要发送一些大数据。我能做什么?
【问题讨论】:
你需要检查你的服务器配置max_post_size并增加它。 在web.config
文件中增加maxAllowedContentLength
。但是,默认限制是 4Mb IIRC,你真的,真的不应该在单个请求中发送那么多 JSON
这个答案可能会有所帮助***.com/a/1151993/4611027
【参考方案1】:
在web.config
中使用下面的代码。它会解决你的问题。
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="900000" />
</webServices>
</scripting>
</system.web.extensions>
【讨论】:
【参考方案2】:当我遇到大型 json 数据的类似问题时,增加 Web 配置中的 maxJsonLength 对我有用。
【讨论】:
以上是关于由于 JSON 较大,Ajax 导致 500 Internal Server Error的主要内容,如果未能解决你的问题,请参考以下文章
BizTalk - JSON Post WebService 导致 500 内部服务器错误
asmx web 服务 - jQuery ajax post json (500 错误) - CORS (Access-Control-Allow-Origin 设置为 *)