Подтвердить что ты не робот

Длина строки превышает значение, заданное для свойства maxJsonLength

Я загружаю данные контента вклада с помощью jQuery ajax post method через веб-метод с 200-300 записями. И получить следующую ошибку в консоли:

Ошибка: Sys.Net.WebServiceFailedException: Sys.Net.WebServiceFailedException: System. InvalidOperationException-- Ошибка при сериализации или десериализации с использованием JSON JavaScriptSerializer. Длина строки превышает значение, заданное для свойства maxJsonLength.

Изменение длины атрибута maxJsonLength в maxJsonLength Web.config не помогает.

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

Может ли кто-нибудь помочь мне решить эту проблему?

4b9b3361

Ответ 1

JavaScriptSerialzer имеет общедоступное свойство с именем MaxJsonLength согласно

http://msdn.microsoft.com/en-us/library/system.web.configuration.scriptingjsonserializationsection.maxjsonlength.aspx

Теперь, когда вы десериализируете свой json, используйте этот

JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = Int32.MaxValue; //Or any size you want to use, basically int maxValue is 2GB, you shouldn't need this big json string to deserialize, else you are doing it wrong.
myObject obj = serializer.Deserialize<myObject>(yourJsonString);

И это должно сработать отлично, я недавно понял это через msdn и решил проблему, которая долго искала меня.

Ответ 2

Я знаю, что это очень старый поток во время моего чтения, и что WebMethod на самом деле не является частью ASP.NET MVC, поэтому это несколько касательно. Но, если кто-то столкнется с ним -

Если вы используете ASP.NET MVC, существует альтернатива непосредственному вызову JavaScriptSerializer, которая заключается в инициализации JsonResult и установке свойства MaxJsonLength в самом результате:

    private JsonResult GetReallyBigJsonResult(object data, JsonRequestBehavior requestBehavior)
    {
            return new JsonResult()
            {
                ContentEncoding = Encoding.Default,
                ContentType = "application/json",
                Data = data,
                JsonRequestBehavior = requestBehavior,
                MaxJsonLength = int.MaxValue
            };

    }

Ответ 3

Не знаете размер вашей строки, но, возможно, она все еще превышает установленный максимальный предел?

В идеале сценарии ajax предназначены только для небольших и средних серверных вызовов не для получения тонны данных, и если вы получаете много данных, используя асинхронный запрос, тогда вы просите о проблемах.

Смотрите здесь для альтернативного