如何在控制器中使用MVC5设置maxJsonLength。从控制器运行负载查询时出现这样的错误
使用JSON JavaScriptSerializer进行序列化或反序列化时出错。字符串的长度超过了在maxJsonLength属性上设置的值。
当前,这是我的控制器中返回json的查询脚本。如果我将查询限制为1000个,则应用程序将正常运行,但是如果我删除该限制并假定这次返回1万行,则将获得超过maxJsonLength的值。
public ActionResult getFunc()
{
List<empDetails> empList = new List<empDetails>();
string constr = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
using (MySqlConnection con = new MySqlConnection(constr))
{
string query = "SELECT emp_id, concat(l_name,', ', f_name) as namess, emp_class, job_cat, hire_date, comp_grade, job FROM empDetails ORDER BY l_name";
using (MySqlCommand cmd = new MySqlCommand(query))
{
cmd.Connection = con;
con.Open();
using (MySqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
try
{
empList.Add(new empDetails
{
id = sdr["emp_id"].ToString(),
name = sdr["namess"].ToString(),
empClass = sdr["emp_class"].ToString(),
jobCat = sdr["job_cat"].ToString(),
hireDate = sdr["hire_date"].ToString(),
compGrade = sdr["comp_grade"].ToString(),
job = sdr["job"].ToString(),
});
}
catch (Exception e)
{
Console.WriteLine("An error occurred: '{0}'", e);
}
}
}
con.Close();
}
}
return Json(empList, JsonRequestBehavior.AllowGet);
}
这是我的ajax来调用我的控制器:
$.ajax({
url: '/Home/getFunc',
type: 'GET',
dataType: 'json',
success: function (data) {
console.log(data)
var row = '';
$('.sortable tbody').html("");
$.each(data, function (i, item) {
row += '<tr style="font-size:11px"><td>' + item.id
+ '</td><td>' + item.name
+ '</td><td>' + item.empClass
+ '</td><td>' + item.jobCat
+ '</td><td>' + item.hireDate
+ '</td><td>' + item.compGrade
+ '</td><td>' + item.job
+ '</td></tr>';
});
$('.sortable tbody').html(row); // override previous results
},
//error: function (jqXhr, textStatus, errorThrown) {
// location.reload();
//}
});
已经尝试将其添加到我的web.config配置中,但仍然无法正常工作,并且具有相同的结果:
system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000"/>
</webServices>
</scripting>
</system.web.extensions>
任何建议或评论。 TIA