[ASP.net MVC] 解決InvalidOperationException: 使用 JSON JavaScriptSerializer 序列化或還原序列化期間發生錯誤。字串的長度超過在 maxJsonLength 屬性上設定的值。
會發生這樣錯誤是因為預設ASP.net MVC的Action裡return Json(data,JsonRequestBehavior.AllowGet);
使用的JavaScriptSerializer有序列化字串長度上限
解決方法兩種:
第1種. 先引用命名空間:using Newtonsoft.Json;
原本的return Json();改為用JsonConvert來回傳Json字串
※JsonConvert效能較佳,且沒有字串長度上限
return Content(JsonConvert.SerializeObject(yourObject, Formatting.Indented,
new JsonSerializerSettings
{ //視自己需求可以拿掉
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
}), "application/json");
第2種:為回傳的JsonResult設定字串長度上限
原本return Json();改為return new JsonResult();
return new JsonResult()
{
Data = yourObject,
MaxJsonLength = int.MaxValue,/*重點在這行*/
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};