Ajax отправка сложного и большого объекта на контроллер Web API выполняется очень медленно - PullRequest
0 голосов
/ 23 апреля 2020

Я отправляю большой объект со слегка сложной структурой через jQuery ajax в метод контроллера Web API, но он очень медленный и занимает более часа, чтобы запрос достиг метода контроллера Web API.

enter image description here

Длина содержимого фиксируется в методе Application_BeginRequest и составляет 27505212.

Сообщение ajax показано ниже ,

public static Send(request: RequestWrapper) {
    return $.ajax({
        url: 'api/MyController/methodname',
        type: 'POST',
        dataType: 'json',
        data: request
    });
}

И метод контроллера, как показано ниже,

    [HttpPost]
    public HttpResponseMessage Send(RequestWrapper request)
    {
    }

Есть ли лучший / простой способ сделать это? Будем благодарны за любые предложения.

1 Ответ

1 голос
/ 23 апреля 2020

27 мегабайт - это действительно большая полезная нагрузка POST. Вы обнаружили, как возможно, чтобы полезный груз был слишком большим!

Вы должны разбить его на гораздо более мелкие куски, возможно, не длиннее 10-50k. Затем ваш сервер может собрать большой объект из кусков. Если вы работаете в инфраструктуре с балансировкой нагрузки, то операция повторной сборки сделает работу вашего общего диспетчера сеансов очень сложной.

Лучшим долгосрочным решением для этого является рефакторинг вашего крупного объекта, чтобы он насчитывал несколько сотен более мелких объектов. Вы ничего не сказали нам о структуре ваших данных, поэтому невозможно дать предложения о том, как это сделать.

...