Ajax-вызов, возвращающий пользователей ошибку: длина строки превышает значение, установленное в свойстве maxJsonLength - PullRequest
0 голосов
/ 29 мая 2019

Я использую ajax-вызов моего контроллера, который возвращает массив из примерно 10 000 пользователей обратно в мое представление, которое используется для закрепления пользователей.Тем не менее, я получаю эту ошибку.

Я прочитал много постов и увидел следующее, и попробовал, но все еще получаю ту же проблему:

Попытался добавить нижев мой web.config:

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

Я также добавил это в свой actionresult:

var objJSS = new JavaScriptSerializer() { MaxJsonLength = Int32.MaxValue };

return Json(objJSS.Serialize(pinnedUsers), JsonRequestBehavior.AllowGet);

Ниже весь мой actionresult:

public ActionResult GetPinnedUsers()
        {
            clsComments clsComments = new clsComments();
            PinnedUsersViewModel[] pinnedUsers;

            pinnedUsers = clsComments.GetPinnedUsers();

            //var jsonResult = Json(pinnedUsers, JsonRequestBehavior.AllowGet);
            //jsonResult.MaxJsonLength = int.MaxValue;

            var objJSS = new JavaScriptSerializer() { MaxJsonLength = Int32.MaxValue };

            return Json(objJSS.Serialize(pinnedUsers), JsonRequestBehavior.AllowGet);
        }

Ниже мой Ajax-вызов:

$.ajax({
        type: 'get',
        traditional: true,
        url: '@Url.Action("GetPinnedUsers", "ILearn")',
        success: function (usersArray) {
                                    success(usersArray)
                                 },
                                error: error
                            });

Я делаю что-то неправильно или что-то упустил?Или есть другой способ передать всех пользователей на мой взгляд?

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Итак, я смог найти решение своей проблемы.Благодаря этой ссылке: ОБРАЩЕНИЕ С БОЛЬШИМ ЦЕЛЕВОЙ ЦЕННОСТЬЮ JSON СЕРИАЛИЗАЦИЯ В MVC

Ниже приведен код, который я использовал:

        public ActionResult GetPinnedUsers()
        {
            clsComments clsComments = new clsComments();
            PinnedUsersViewModel[] pinnedUsers;

            //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.

            pinnedUsers = clsComments.GetPinnedUsers();

            return SerializeJSON(pinnedUsers);
        }

        private ContentResult SerializeJSON(PinnedUsersViewModel[] users)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            serializer.MaxJsonLength = Int32.MaxValue;
            var resultData = users;

            ContentResult result = new ContentResult();
            result.Content = serializer.Serialize(resultData);
            result.ContentType = "application/json";

            return result;
        }
0 голосов
/ 29 мая 2019

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);

вы можете попробовать это при попытке десериализации строки JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...