2013-10-07 1 views
0

JSON을 가져 오는 중 제한된 길이 (2147483644)로 인해이 오류가 발생합니다.JSON JavaScriptSerializer를 사용하여 직렬화 또는 직렬화 해제 중에 오류를 catch하는 방법

어떻게이 오류를 잡을 수 있습니까?

JSON JavaScriptSerializer를 사용하여 직렬화 또는 비 직렬화하는 동안 오류가 발생했습니다. 문자열의 길이가 maxJsonLength 등록 정보에 설정된 값을 초과합니다.

이것은 내가 지금 코딩하는 방식입니다.

[HttpGet] 
     public JsonResult GetSearchData(string filter) 
     { 
      IRemediationService svc = new RemediationService(); 
      var data = svc.SearchData(filter); 
      try{ 
       return Json(data, JsonRequestBehavior.AllowGet); 
      }catch(Exception e){ 
       return "Error"; 
      } 

    } 

답변

2

MVC 4에서 당신은 할 수 있습니다 :

protected override JsonResult GetSearchData(string filter) 
{ 
    IRemediationService svc = new RemediationService(); 
    var data = svc.SearchData(filter); 
    try 
    { 
     return new JsonResult() 
      { 
       Data = data, 
       JsonRequestBehavior = JsonRequestBehavior.AllowGet, 
       MaxJsonLength = Int32.MaxValue 
      }; 
    } 
    catch (Exception e) 
    { 
     return "Error"; 
    } 
} 

당신은 데이터를 확인하고 개체를 아래로 트림 할 수있다.

경우 어쩌면 당신은 그냥 ... 문자열로 다시 전송되는 문자열의 길이에 어떤 제한을

protected override ActionResult GetSearchData(string filter) 
{ 
    IRemediationService svc = new RemediationService(); 
    var data = svc.SearchData(filter); 
    try 
    { 
     return Content(data.ToString()); 
    } 
    catch (Exception e) 
    { 
     return "Error"; 
    } 
} 
+0

Thanks.Is 그것을 다시 전달할 수 있지? – lostpacket

+0

클라이언트마다 다를 수 있습니다. 그러나 나는 확실하지 않다. 나는 최대 길이에 도달하기 전에 OOM 예외를 쳤다. 데이터가 얼마나 큰지! 롤, 아마 당신은 일일 드롭 또는 뭔가를해야 ;-) – Faraday

+0

다를 수 있습니다. JSON에서 사용자가 더 넓은 시간 범위를 요구하거나 단기간에 많은 값을 수집하는 경우 { '시간': 1381186243, '값': 123.4} 번 1000 또는 5000 또는 그 이상이라고 말할 수 있습니다. – lostpacket

관련 문제