Загрузка файла со вторым запросом jquery - PullRequest
0 голосов
/ 27 апреля 2018

Я загружаю файл, используя jquery ajax с прогрессбаром (xhr).

$.ajax({
    url: "../Services/upload.ashx",
    type: "POST",
    data: formData,
    cache: false,
    contentType: false,
    processData: false,
    timeout: 60000
    xhr: function () {
        var myXhr = $.ajaxSettings.xhr();
        if (myXhr.upload) {
            myXhr.upload.addEventListener('progress', that.progressHandling, false);
        }
        return myXhr;
    }

Upload.prototype.progressHandling = function (event) {
    var percent = 0;
    var position = event.loaded || event.position;
    var total = event.total;
    if (event.lengthComputable) {
        percent = Math.ceil(position / total * 100);
    }
};

Прогрессбар работает отлично. Файл загружается на сервер, но после загрузки требуется некоторая обработка на стороне сервера. Я пытаюсь проверить состояние этой обработки на стороне сервера, сделав еще один запрос jquery ajax.

Проблема в ответе на этот второстепенный вызов. Я не могу получить этот ответ, потому что первый (загрузка файла) все еще ожидает обработки.

ИМХО, эти два запроса являются асинхронными, так почему, если я сделал загрузку файла с длительной обработкой на стороне сервера, это блокирует мне получение любых других ответов от других вызовов ajax?

1 Ответ

0 голосов
/ 30 апреля 2018

Проблема не в jquery ajax. Проблема в серверном siade - с универсальным обработчиком. Он использует сессии, поэтому он будет блокировать любые другие запросы.

Пожалуйста, проверьте эту тему для получения дополнительной информации:

https://forums.asp.net/t/1798041.aspx?A+request+to+a+long+running+handler+blocks+all+requests+to+other+pages

Когда поступают запросы, Session удерживает монопольную блокировку, поэтому другие запросы из этого же сеанса не будут выполняться параллельно и должны выполняться один за другим.

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