我在返回大型JSON结果时遇到以下异常:
字符串的长度超过maxJsonLength上设置的值 属性。
我正在尝试捕获序列化发生的异常,但这不会发生。
try
{
return new JsonResult()
{
Data = LargeJsonData,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
catch (Exception)
{
return "Error";
}
我不想调整属性。我只想抓住异常并妥善处理。
我发现以下问题看似重复,但接受的答案会修改maxJsonLength属性。
How to catch error during serialization or deserialization using the JSON JavaScriptSerializer
谢谢, 史蒂夫
答案 0 :(得分:1)
当在Json结果上调用ExecuteContext方法时,将抛出此异常。您可以通过为JsonResult定义自己的覆盖并在此处捕获它来解决此问题,例如。
public class CustomJsonResult : JsonResult
{
private const string _dateFormat = "yyyy-MM-dd HH:mm:ss";
public override void ExecuteResult(ControllerContext context)
{
try
{
base.ExecuteResult(context);
}
catch(Exception ex)
{
//Handle it
}
}
然后返回此实例而不是JsonResult。