2015-01-28 5 views
5

Mam usługę .Net Web (.asmx), która zwróci ciąg Json do mojego klienta. Jednak niektóre z moich danych są naprawdę duże i czasami pojawia się ten błąd.długość ciągu przekracza wartość ustawioną w właściwości maxJsonLength

Długość ciągu przekracza wartość ustawioną we właściwości maxJsonLength.

Zmieniłem właściwość maxJsonLength na 2147483644, ale nadal nie działa. Proszę, pomóż ... Dziękuję.

<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

Does [pytanie (i odpowiedziach)] (http://stackoverflow.com/questions/1151987/can-i -set-an-unlimited-length-for-maxjsonlength-in-web-config) rozwiązać swój problem? – NextInLine

+0

George - druga odpowiedź w linku z @NextInLine jest tą, której potrzebujesz: ustaw 'maxJsonLength' jako właściwość twojego' nowego JavaScriptSerializer'. Pierwsza odpowiedź w linku nie pomoże. –

+0

Mówisz, że używasz ["Newtonsoft.Json"] (http://www.newtonsoft.com/json), ale w twoim kodzie używasz ['JavaScriptSerializer'] (https://msdn.microsoft.com/ en-us/library/system.web.script.serialization.javascriptserializer% 28v = vs.110% 29.aspx). Aby potwierdzić, nie korzystasz z Newtonsoft.Json, prawda? – dbc

Odpowiedz

7

Dzięki sugestii Eda Gibbsa i @NextInLine. Zrobiłem poprawkę jak poniżej i teraz działa jak urok. Ja również usunąć część "system.web.extensions" z dala od mojego 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); 
     }