2016-08-04 9 views
0

데이터베이스에서 이미지를 검색하려고하는데 작은 이미지로도 잘 작동하지만 Windows 7 기본 이미지 (Desert, Koala, Penguins, Tulips 등)로 시도하면 효과가 나타나지 않습니다. 이 오류 :직렬화 또는 직렬화 해제 중 오류가 발생했습니다. JSON JavaScriptSerializer

"Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property."

나는이 내 Web.config의 수정 :

:

<scripting> 
    <webServices> 
    <jsonSerialization maxJsonLength="2147483647"/> 
    </webServices> 
</scripting> 

는 내가 이미지를 검색하는 데 사용하는 코드입니다 617,451,515,

public static byte[] Serialize(object obj) { var binaryFormatter = new BinaryFormatter(); var ms = new MemoryStream(); binaryFormatter.Serialize(ms, obj); return ms.ToArray(); } [WebMethod] public string ObtenerImagen(int id) { DataTable dt = new DataTable(); dt = conn.consultarImagen("alertas", id); Imagenes img; List<Imagenes> lista = new List<Imagenes>(); for (int i = 0; i < dt.Rows.Count; i++) { img = new Imagenes(); img.Id = Convert.ToInt32(dt.Rows[i]["Id"]); img.FileName = dt.Rows[i]["FileName"].ToString(); img.Type = dt.Rows[i]["ContentType"].ToString(); img.Content = Convert.ToBase64String(Serialize(dt.Rows[i]["Content"])); img.IdAlerta = Convert.ToInt32(dt.Rows[i]["IdAlerta"]); img.Pie = dt.Rows[i]["PieFoto"].ToString(); //Llenado de lista lista.Add(img); img = null; } JavaScriptSerializer js = new JavaScriptSerializer(); string lineas = js.Serialize(lista); return lineas; } 

그리고 나는 아약스와 함께이 자바 스크립트 함수를 사용

success: function (data) { 
     var aRC = JSON.parse(data.d); 
     var lineas = ""; 

     for (var i = 0; i < aRC.length; i++) { 
      var id = aRC[i].Id; 
      var num = id; 
      var rev = aRC[i].FileName; 
      var pur = aRC[i].Type; 
      var status = aRC[i].Content; 
      var imagen = status.substring(36, status.length - 37); 
      var owner = aRC[i].IdAlerta; 
      var pie = aRC[i].Pie; 

      lineas += '<div class="col-lg-3 col-md-4 col-xs-3 thumb marco">'; 
      lineas += '<a class="thumbnail" href="#">'; 
      lineas += '<img class="responsive" src="data:image/jpeg;base64,' + imagen + '" />';      
      lineas += '<p class="text-justify" id="Pie' + i + '">' + pie + '</p>'; 
      lineas += '</a>'; 
      lineas += '<span class="btn btn-xs btn-success fa fa-pencil hidden-print" id="EditPie' + i + '"></span>'; 
      lineas += '<input type="text" class="form-control hidden hidden-print" id="PiePag' + i + '"> <span class="btn btn-xs btn-success fa fa-check hidden hidden-print" id="OkPie' + i + '"></span>'; 
      lineas += '</div>'; 
     } 
     $('#Imagenes').html(lineas); 

내가 상점이 문제를 해결 할 수 있습니까? 나는 전혀 모른다.

편집 : 나는 1 개 이상의 이미지를 표시 할 때 한 이미지와 잘 작동 문제가 발생

+0

우연히이 MVC입니까? – Santi

+0

아니요, MVC가 아니며 AJAX 호출 및 JavaScript가 포함 된 HTML 및 C# WebService입니다. –

+1

아, 알겠습니다, 사과드립니다. MVC의 알려진 경고에 따르면 Web.Config의'maxJsonLength'는 본질적으로 무시되고 코드 내에서 선언되어야합니다. 다른 제안은 없으므로 다른 사람이 귀하의 질문에 답변하도록하겠습니다. 행운을 빕니다! – Santi

답변

1

이 같이 생성 된 인스턴스를 통해 최대 JSON 길이를 설정해보십시오 :

js.MaxJsonLength = Int32.MaxValue;

차이점이 있는지 확인해보십시오. 개체에 얼마나 큰 충격을 가하고 있습니까? JSON은 대형 객체 목록과 잘 작동하지 않으며 AJAX를 통해 게으른로드가 쉬울 수도 있습니다. 대형 갤러리를 보면, 로딩 이미지를 표시하는 반면 백그라운드에서는 다음 항목에 대한 특정 객체를 검색하는 경향이 있습니다.

+0

다음 코드를 편집합니다. var js = new JavaScriptSerializer {MaxJsonLength = Int32.MaxValue}; string lineas = js.Serialize (lista); 적어도 4 개의 이미지를 사용해 보았습니다. 감사합니다. –

+0

좋습니다. 평균이 있습니까? 전혀 이미지 크기에? 나는 서비스 나 MVC가 웹 설정 파일에서 무시한다는 인상을 받았다. 나는 아약스를 통해 게으른 로딩을 체크 아웃 하겠지만, 사용자에게 더 나은 뷰잉 경험을 제공 할 것이다. –

+0

2MB 미만. 이제 10 개 이상의 이미지로 시도하고 잘 작동합니다! 그래서 문제는 그 서비스가 web.config를 무시하고 있다는 것입니다. –

관련 문제