Несколько параллельных запросов не обрабатываются сервером - PullRequest
1 голос
/ 04 ноября 2019

Я пытаюсь получить прогресс метода контроллера. Я использовал метод setInterval для вызова метода progress внутри контроллера, но вызов ajax внутри setInterval попадает в контроллер только после выполнения метода контроллера, и до этого времени состояние запросов ajax сохраняет pending на вкладке сети браузера. .

Я рассмотрел создание первого метода асинхронного

Код Java Script

function Import() {
    $('.loader').show();

    var checked;
    if ($('#chkNewCycle').is(":checked")) {
        checked = 'on';
    }
    else {
        checked = 'off';
    }

    var NewCycle = { IsNewCycle: checked };

    $.ajax({
        url: '/DataImport/Import',
        type: 'POST',
        data: NewCycle,
        success: function (result) {
            $('.loader').hide();
            if (result == "success") {
                window.clearInterval(intervalId);
                alert("Imported file for processing.");
                ClearData();

            }
            else {
                alert(result);
            }
        }
    });   


    var intervalId = window.setInterval(function () {
        $.getJSON('/DataImport/GetProgress', function (json) {
            console.log(json.Progress);
            $('#progress').html(json.Progress + '%');
        });
    }, 2000);



}

controller.cs

public async Task<string> Import(string IsNewCycle)
{
/*Some Code*/

await Task.Run(() => { 
/*Some Code*/

int iProgress =Convert.ToInt32(dProgress * 100);
HttpContext.Application["Progress" ] = iProgress;

 });

return string;


}

public ActionResult GetProgress()
{
return Json(new
{
     Progress = HttpContext.Application["Progress"]
}, JsonRequestBehavior.AllowGet);
}

Мне нужно получить обаметод контроллера ударил одновременно

1 Ответ

1 голос
/ 04 ноября 2019

Украсьте свой контроллер атрибутом [SessionState(SessionStateBehavior.ReadOnly)], тогда вы сможете выполнять запросы параллельно.

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