İçeriğe geç

Error during serialization or deserialization using the JSON JavaScriptSerializer…

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

JSON JavaScriptSerializer kullanılarak serileştirme veya seriyi kaldırma sırasında hata. Dizenin uzunluğu maxJsonLength özelliğinde ayarlanan değeri aşıyor.

Bu hatanın temel kaynağı, sunucudan client yani istemci tarafına gönderilen verinin maksimum sınırları aşmasıdır. Ancak çözümü iki yönlü. Birincisi web.config üzerinde yapılması gereken aşağıdaki şekilde bir ayarlama.

  <system.web.extensions>
    <scripting>
      <webServices>
        <jsonSerialization maxJsonLength="2147483647" recursionLimit="2147483647" />
      </webServices>
    </scripting>
  </system.web.extensions>

Bu ayarlamada “maxJsonLength” içerisinde verilecek değer int tipindedir ve maksimum int.MaxValue, yani 2147483647 değerini alabilir. Ayrıca burada belirtilen rakam byte cinsindendir. Yani örneğin maksimum 1MB’lık bir yanıt dönebilmesini istiyor isek 1 x 1024 x 1024 = 1048576 değerini belirtmeniz gerekiyor.

Bu arttırma işlemini istediğimiz şekilde yaptıktan sonra (ki ben yukarıdaki örnekte int.MaxValue değeri olan 2147483647 yi kullandım) sıra geldi kodumuzda aşağıdaki şekilde ufak bir düzenleme yapmaya.

return Json(new { success = model.Success, message = model.Message, text = model.Text });

Kodumuzun return tipi bu şekilde idi. Ancak bunu aşağıdaki şekilde değiştiriyoruz.

JsonResult json = new JsonResult();
json.Data = new { success = model.Success, message = model.Message, yazi = model.Yazi };
json.MaxJsonLength = int.MaxValue;

return json;

Bu şekilde değiştirdik ve gördüğünüz gibi json.MaxJsonLength değerini int.MaxValue olarak verdik. Böylece yanıtın en yüksek boyuta sahip olabileceğini kodumuza belirttik.

İşte işlem bu kadar. Bu işlemlerin sonunda problemimiz çözülmüş olmalı.

Eğer ek bir hata ile karşılaşırsanız lütfen yorumlardan bana ulaşın. Elimden geldiğince yardımcı olmaya çalışayım.

0 0 votes
Article Rating
Tarih:Hatalar ve Çözümler
Subscribe
Bildir
guest
1 Yorum
Eskiler
En Yeniler Beğenilenler
Inline Feedbacks
View all comments
Orhan
Orhan
9 ay önce

Merhaba. Örnek için teşekkür ederim. Uyguladığımda çalışmadı ama AlloGet ekleyince çalıştı.
JsonResult json = new JsonResult();
 json.Data = selectedlayout.ToJson();
 json.MaxJsonLength = int.MaxValue;
 json.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
 return json;

Bilginize

1
0
Would love your thoughts, please comment.x