2015-01-28 11 views
5

'da ayarlanan değeri aşar. İstemcime bir Json dizesi döndüren bir .Net Web hizmeti (.asmx) var. Ancak, bazı verilerim gerçekten büyük ve bazen bu hatayı alıyorum.Dizgenin uzunluğu, maxJsonLength özelliği

Dizenin uzunluğu, maxJsonLength özelliğinde ayarlanan değeri aşıyor.

MaxJsonLength özelliğini 2147483644 olarak değiştirdim, ancak yine de çalışmıyor. Lütfen yardım edin ... Teşekkürler.

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



[WebMethod] 
     [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)] 
     public void GetData(string login) 
     { 
      // throw an error on this line... 
      string result = new JavaScriptSerializer().Serialize(service.GetData(login)); 


      Context.Response.Write(result); 
     } 
+0

mu [Bu soru (ve cevapları)] (http://stackoverflow.com/questions/1151987/can-i uzak "System.Web.Extensions" bölümünü kaldırıldı -set-sınırsız uzunlukta-maxjsonlength-in-web-config) sorununuzu çözebilir? – NextInLine

+0

George - @NextInLine bağlantısındaki ikinci cevap: "maxJsonLength" öğesini "yeni JavaScriptSerializer" 'da bir özellik olarak ayarlayın. Bağlantıdaki ilk cevap size yardımcı olmaz. –

+0

["Newtonsoft.Json"] (http://www.newtonsoft.com/json) kullandığınızı söylüyorsunuz, ancak kodunuzda ['JavaScriptSerializer'] kullanıyorsunuz (https://msdn.microsoft.com/ en-us/kütüphane/system.web.script.serialization.javascriptserializer% 28v = vs.110% 29.aspx). Sadece onaylamak için Newtonsoft.Json'u kullanmıyorsun, değil mi? – dbc

cevap

7

Ed Gibbs ve @NextInLine 'nin önerisi sayesinde. Düzeltmeyi aşağıdaki gibi yaptım ve şimdi bir çekicilik gibi çalışıyor. Ben de web.config

[WebMethod] 
     [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)] 
     public void GetData(string login) 
     { 

      // when the amount of data return is huge 
      var serializer = new JavaScriptSerializer(); 

      // we need to do this. 
      serializer.MaxJsonLength = Int32.MaxValue; 


      var result = serializer.Serialize(service.GetData(login)); 


      Context.Response.Write(result); 
     }