ASP.NET MVC捕获序列化maxJsonLength违规

时间:2015-06-02 10:51:11

标签: c# json asp.net-mvc

我在返回大型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

谢谢, 史蒂夫

1 个答案:

答案 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。