2015-06-02 3 views
0

Я получаю следующее исключение при возвращении большого результата JSON:ASP.NET MVC Ловля нарушение Сериализация maxJsonLength

Длина строки превышает значение, установленное на свойстве 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

Возможный дубликат. Прочтите эту статью. http://stackoverflow.com/questions/1151987/can-i-set-an-unlimited-length-for-maxjsonlength-in-web-config –

+0

Может быть, вы не сможете его поймать, потому что ошибка возникает после контроля возвращается из метода. Попробуйте вручную проверить длину данных и сравнить их с свойством 'maxJsonLength'. –

+0

Посмотрите здесь http://stackoverflow.com/a/19235980/2115584 – Baximilian

ответ

1

Это будет быть брошенным, когда метод ExecuteContext вызывается в результате Json. Вы можете обойти это, указав свое собственное переопределение для 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.

Смежные вопросы