Xmlhttprequest сетевая ошибка 0x2ee2 не удалось завершить действие ошибка 00002ee2

У нас есть фрагмент кода, который загружает несколько файлов на сервер, что интересно, этот код отлично работает в Chrome и Mozilla, но не работает в Internet Explorer, получая следующую ошибку

XMLHttpRequest: сетевая ошибка 0x2ee2, не удалось завершить операцию из-за ошибки 00002ee2

Мы пробовали решения, упомянутые в SCRIPT7002: XMLHttpRequest: Network Error 0x2ef3 , Не удалось завершить операцию из-за ошибки 00002ef3, но по-прежнему возникает аналогичная проблема

Мы изменили значение тайм-аута для Internet Explorer, используя следующие это руководство, но оно бесполезно.

Находим строку кода, вызывающую проблему

///////////////////////////////////////////////////////////////////////
        // Private Helper for making servlet calls
        _servercall: function(urlStr, input, isAsync, dataT, ajaxcallback) {
            // Using the core $.ajax method
            $.ajax({
                // the URL for the request
                url : urlStr,
                async : isAsync,
                // the data to send (will be converted to a query string)
                data : input,
                // whether this is a POST or GET request
                type : "GET",
                // the type of data we expect back
                dataType : dataT,
                // code to run if the request succeeds;
                // the response is passed to the function
                success : function(json) {
                    console.log("Server call - Success");
                    ajaxcallback(json);
                },
                // code to run if the request fails; the raw request and
                // status codes are passed to the function
                // This needs to be better handled, more graceful error, ToDo
                error : function(xhr, status) {
                    console.log("Server call - error. Status " + status);
                    JCAAlert("com.ptc.windchill.enterprise.attachments.attachmentsResource.DO_APPLET_UPLOAD_ERROR");
                    this.cleanupUploadFields(this.wizardStep, null);
                },
                // code to run regardless of success or failure
                complete : function(xhr, status) {
                    console.log("The request is complete! Status " + status);
                }
            });
        },

Этот код работает нормально до файла номер 12 в IE, но как только мы выберем более 12 файлов, он выйдет из строя с указанной выше ошибкой?

Это ограничение ajax или что-то в этом роде?

See error snapshot

1 ответ

Лучший ответ

AJAX Error:

XMLHttpRequest: Network Error 0x2ee2, Could not complete the operation due to error 00002ee2

Js Code:

$.ajax({
    type: 'POST',
    url: 'ImportDataDataFileUpload',
    data: JSON.stringify({ positionDate: positionDate }),
    dataType: "text",
    contentType: "application/json; charset=utf-8",
    beforeSend: function () { lpImport.Show(); },
    success: function (msg) {
        console.log(msg);
        ImportDataGridView.PerformCallback();
        ImportSuccessMessage.SetVisible(true);
        ImportSuccessMessage.SetText(msg);
        lpImport.Hide();
    },
    error: function (xhr, textStatus, errorThrown) {
        console.log(xhr);
        console.log(textStatus);
        console.log(errorThrown);
        ImportSuccessMessage.SetText(errorThrown);
        ImportDataGridView.PerformCallback();
    }
});

Results:

The Debugger yields:

  • errorThrown is ""
  • textStatus is "error".

Screenshot:

Screenshot

My Controller:

[HttpPost]
public ActionResult DataFileUpload(string positionDate)
{
    // Reset validation error collection
    ImportDataValidationErrors = new List<ImportFileRecord>();
    string[] errs;
    try
    {
        Dictionary<string, double> retDictAPI = new Dictionary<string, double>();
        DateTime dateValue;
        DateTime.TryParse(positionDate, out dateValue);
        var HoldAPI = "SomeAPI";
        retDictAPI = ProcessImportFileAPI(HoldAPI);
        string ReturnVal = "Import is successful";
        return Content(ReturnVal);
        
    }
}

Any idea what am I doing wrong here? Thanks for the help.

AJAX Error:

XMLHttpRequest: Network Error 0x2ee2, Could not complete the operation due to error 00002ee2

Js Code:

$.ajax({
    type: 'POST',
    url: 'ImportDataDataFileUpload',
    data: JSON.stringify({ positionDate: positionDate }),
    dataType: "text",
    contentType: "application/json; charset=utf-8",
    beforeSend: function () { lpImport.Show(); },
    success: function (msg) {
        console.log(msg);
        ImportDataGridView.PerformCallback();
        ImportSuccessMessage.SetVisible(true);
        ImportSuccessMessage.SetText(msg);
        lpImport.Hide();
    },
    error: function (xhr, textStatus, errorThrown) {
        console.log(xhr);
        console.log(textStatus);
        console.log(errorThrown);
        ImportSuccessMessage.SetText(errorThrown);
        ImportDataGridView.PerformCallback();
    }
});

Results:

The Debugger yields:

  • errorThrown is ""
  • textStatus is "error".

Screenshot:

Screenshot

My Controller:

[HttpPost]
public ActionResult DataFileUpload(string positionDate)
{
    // Reset validation error collection
    ImportDataValidationErrors = new List<ImportFileRecord>();
    string[] errs;
    try
    {
        Dictionary<string, double> retDictAPI = new Dictionary<string, double>();
        DateTime dateValue;
        DateTime.TryParse(positionDate, out dateValue);
        var HoldAPI = "SomeAPI";
        retDictAPI = ProcessImportFileAPI(HoldAPI);
        string ReturnVal = "Import is successful";
        return Content(ReturnVal);
        
    }
}

Any idea what am I doing wrong here? Thanks for the help.

Вопрос:

У меня есть запрос ajax POST, который может занимать от 2 секунд до 30 + минут. Запрос на отправку происходит в результате нажатия кнопки

Если запрос занимает менее минуты или двух, он возвращается с ответом, и все работает нормально. Однако, если запрос занимает более двух минут, он возвращается с “Ошибка сети: XMLHttpRequest: Ошибка сети 0x2eff, не удалось завершить операцию из-за ошибки 00002eff”.

Конечно, он отлично работает Firefox и Chrome.

Приложение развертывается на сервере JBoss с включенным SSL. Архитектура здесь заключается в том, что у нас есть балансировщик нагрузки, который направляет запрос на два сервера Jboss.

Internet Explorer

Версия: 11.0.9600.180971C
Обновление: 11.0.25

Я пробовал следующее, но тщетно

1) ajax set cache to false – не работает

2) Изменены настройки реестра в соответствии с https://support.microsoft.com/en-us/kb/813827 – не работает, вот где это запутывает, thissuggests это не вещь IE, но в то же время это работает на chrome и ff, поэтому это не серверная вещь

3) Установите тайм-аут ajax на 0 – не работает
4) Добавлен e.preventDefault после $(‘# mdlSgn’). Click (function() {as jQuery Запросы Ajax отменяются без отправки

$('#mdlSgn').click(function() {
$('#cnfdsgl').modal('hide');

$.ajax({
url: ajaxUrl,
type: "POST",
data: JSON.stringify(input),
contentType: "application/json; charset=UTF-8",
dataType: "json",
success: function(data) {
/// some logic


},
error : function(jqXhr, textStatus, errorThrown) {
/// some logic
}
});

//some other logic
});

Ответ №1

может занимать от 2 до 30 минут

Я предполагаю, что это связано с большим объемом передаваемых данных.

У меня есть большой файловый загрузчик, который обрабатывает файлы размером 20 ГБ + и может длиться несколько часов.

По моему опыту – загрузка больших данных с помощью одного запроса ajax может вызвать странные сбои браузера (например, мой браузер Chrome сбой примерно в 20% тестов загрузки).

Самый надежный способ, который я нашел, – разделить данные на куски 1 МБ и отправить их последовательно на сервер с помощью отдельных запросов ajax.

Ответ №2

Мы проводим несколько дней в поисках причины этой проблемы!

  • В консоли: SCRIPT7002: XMLHttpRequest: Сетевая ошибка 0x2eff. Не удалось завершить операцию из-за ошибки 00002eff.
  • На вкладке сети IE/Edge мы видим неудавшийся запрос как “Ожидание…”
  • XmlHTTPRequest/JQuery возвращает ошибку 404 на клиенте, но сервер успешно возвратил ответ 200.

У нас была эта проблема только при использовании всего этого:

  • HTTP/2
  • POST-запросы
  • Windows 10
  • IE или Edge

По-видимому, это ошибка Windows 10 в стеке HTTP, которая теперь решается в Windows 10 версии 1803 (апрель 2018 года). Поэтому обычно эта проблема исчезает со временем для людей/компаний, использующих автоматические обновления Windows. Используется Windows 10 версии WorldWide

Мы проверили это на более старой и новой версии Windows 10, и она действительно решена.

Некоторое временное решение может быть:

  • отключите HTTP/2 для IE и Edge и используйте HTTPS (на стороне сервера).
  • используйте GET (если возможно)
  • PUT также имеет эту проблему?
  • сделать несколько попыток
  • принять, что пользователи IE/Edge будут наказаны 😉

Ответ №3

В моем случае это был пользовательский код ответа (3020), возвращенный с сервера. Переключил его на 200 и изменил логику клиента SPA, это решило проблему.

@ptizaezhik

Интернет в нашей организации работает через прокси,
Сейчас используем компоненту версии 5.29.7.549 — проблем нет.
Решил проверить новую 5.33.6.682 — не работает
TestConnection2 выдает ErrorText = WIN32[0x00002EE2]WinHttpSendRequest

Как только включаем прямой доступ к diadoc-api.kontur.ru — работает.
Ошибка в компоненте?

@GilimkhanovDenis

Скорее нет, чем да

0x2ee2 — таймаут соединения. Почему он возникает, сложно сказать без знания настроек компа, настроек прокси-сервера, настроек подключения компоненты

Вероятнее, что неправильно указаны настройки прокси в компоненте

@ptizaezhik

Скорее нет, чем да

0x2ee2 — таймаут соединения. Почему он возникает, сложно сказать без знания настроек компа, настроек прокси-сервера, настроек подключения компоненты

Вероятнее, что неправильно указаны настройки прокси в компоненте

А там есть возможность настроек прокси? Как?

@GilimkhanovDenis

@ptizaezhik

У корневого объекта есть поля:

* ProxyMode

* ProxySettings

* AutoLogonPolicy

Спасибо. По-умолчанию стояло «UseDefaultProxy».
Поменял на «UseProxy» и указал адрес для нашей сети «proxy.local:8080» (без авторизации) — только тогда заработало.

Остаётся вопрос: почему при «UseDefaultProxy» не работает?

@GilimkhanovDenis

Для ответа на вопрос нам понадобятся:

  • Лог WinHttp (как собрать), когда настройка в компоненте выставлена в UseDefaultProxy
  • Номер диагностики

@ptizaezhik

Для ответа на вопрос нам понадобятся:

* Лог WinHttp ([как собрать](https://docs.microsoft.com/en-us/windows/win32/wsdapi/capturing-winhttp-logs)), когда настройка в компоненте выставлена в UseDefaultProxy

* Номер [диагностики](https://help.kontur.ru/diadoc)

Номер диагностики — 21505708

А с логами WinHttp проблема на Win 10.
Инструкция по указанной ссылке приводит к такому результату
«Используйте команду netsh trace start scenario=InternetClient»

Гугл не очень помог.
После netsh trace start scenario=InternetClient формируется etl страшного размера.
Пробовал открывать через Microsoft Network Monitor — не нашел сходу логов WinHttp.

Подскажете, как на Win10 собрать логи WinHttp ?

@GilimkhanovDenis

Попробуем без логов исправить. Спасибо

I have an ajax POST request that can take anywhere between 2 seconds to 30+ minutes. The post request occurs as a result of button click

If the request takes less than a minute or two, it comes back with a response and everything works fine. However if the request takes longer than two minutes it comes back with «Network error: XMLHttpRequest: Network Error 0x2eff, Could not complete the operation due to error 00002eff».

Ofcourse, it works fine Firefox and Chrome.

The application is deployed on a JBoss server with SSL enabled. The architecture here is that we have a load balancer that routes the request to two Jboss servers.

Internet Explorer

Version: 11.0.9600.180971C
Update: 11.0.25

I have tried the following but in vain

$('#mdlSgn').click(function() {
    $('#cnfdsgl').modal('hide');

     $.ajax({
        url: ajaxUrl,
        type: "POST",
        data: JSON.stringify(input),
        contentType: "application/json; charset=UTF-8",
        dataType: "json",
        success: function(data) {
             /// some logic


        },
        error : function(jqXhr, textStatus, errorThrown) {
            /// some logic
        }
    });

 //some other logic
}); 

AJAX Error:

XMLHttpRequest: Network Error 0x2ee2, Could not complete the operation due to error 00002ee2

Js Code:

$.ajax({
    type: 'POST',
    url: 'ImportDataDataFileUpload',
    data: JSON.stringify({ positionDate: positionDate }),
    dataType: "text",
    contentType: "application/json; charset=utf-8",
    beforeSend: function () { lpImport.Show(); },
    success: function (msg) {
        console.log(msg);
        ImportDataGridView.PerformCallback();
        ImportSuccessMessage.SetVisible(true);
        ImportSuccessMessage.SetText(msg);
        lpImport.Hide();
    },
    error: function (xhr, textStatus, errorThrown) {
        console.log(xhr);
        console.log(textStatus);
        console.log(errorThrown);
        ImportSuccessMessage.SetText(errorThrown);
        ImportDataGridView.PerformCallback();
    }
});

Results:

The Debugger yields:

  • errorThrown is ""
  • textStatus is "error".

Screenshot:

Screenshot

My Controller:

[HttpPost]
public ActionResult DataFileUpload(string positionDate)
{
    // Reset validation error collection
    ImportDataValidationErrors = new List<ImportFileRecord>();
    string[] errs;
    try
    {
        Dictionary<string, double> retDictAPI = new Dictionary<string, double>();
        DateTime dateValue;
        DateTime.TryParse(positionDate, out dateValue);
        var HoldAPI = "SomeAPI";
        retDictAPI = ProcessImportFileAPI(HoldAPI);
        string ReturnVal = "Import is successful";
        return Content(ReturnVal);
        
    }
}

Any idea what am I doing wrong here? Thanks for the help.

В веб-версии skype (в IE11 или Edge) кратковременно происходит переключение статуса на оффлайн.
Используется Windows 10 1709.

В консоли разработчика (по нажатии F12) можно видеть повторяющиеся ошибки:
SCRIPT7002: XMLHttpRequest: Сетевая ошибка 0x2ee2, Не удалось завершить действие. Ошибка 00002ee2

А в той же консоли на вкладке сеть видно, что не удается получить ответ от следующего узла:
Имя Протокол Метод Результат Тип содержимого Получено Время Инициатор
https://db4-client-s.gateway.messenger.live.com/v1… POST null 0 с XMLHttpRequest

Скриншоты ошибки

5b3d286be0477065710377.png5b3d28761c4ff366013940.png

Видимо, причина этой проблемы мешает же мне использовать web-клиент Skype for business в котором так же постоянно теряется связь с сервером при подключении к конференции. Кстати, в нём соединение идет только через протокол TCP, хотя должно и через UDP, насколько я знаю.

Под другим пользователем на том же ПК проблема не воспроизводится.
На соседнем компьютере с Windows 10 1803 в одной сети проблема не воспроизводится.
На многих ПК в корпоративной сети те же симптомы на win 10 и win 7.

Безуспешные попытки разобраться

Проблема осталась и при подключении через разные каналы интернет.
В режиме чистой загрузки так же возникает проблема.
Пробовал сбрасывать сетевые интерфейсы (netsh winsock reset), чистил кэш DNS.
Сбрасывал настройки IE.
Переносил настройки IE с ПК где проблемы нет.
Обновлял, удалял приложения Skype.
Просил помощи у MS Community тут1(ru) и тут2(en)

Прошу помочь разобраться с данной проблемой.
Спасибо.

AJAX Error:

XMLHttpRequest: Сетевая ошибка 0x2ee2, Не удалось завершить операцию из-за ошибки 00002ee2

Js Code:
$.ajax({
    type: 'POST',
    url: 'ImportDataDataFileUpload',
    data: JSON.stringify({ positionDate: positionDate }),
    dataType: "text",
    contentType: "application/json; charset=utf-8",
    beforeSend: function () { lpImport.Show(); },
    success: function (msg) {
        console.log(msg);
        ImportDataGridView.PerformCallback();
        ImportSuccessMessage.SetVisible(true);
        ImportSuccessMessage.SetText(msg);
        lpImport.Hide();
    },
    error: function (xhr, textStatus, errorThrown) {
        console.log(xhr);
        console.log(textStatus);
        console.log(errorThrown);
        ImportSuccessMessage.SetText(errorThrown);
        ImportDataGridView.PerformCallback();
    }
});

Результаты:

Отладчик выдает:

  • errorThrown is """.
  • textStatus"ошибка".
Скриншот:

Screenshot

Мой контроллер:

[HttpPost]
public ActionResult DataFileUpload(string positionDate)
{
    // Reset validation error collection
    ImportDataValidationErrors = new List<ImportFileRecord>();
    string[] errs;
    try
    {
        Dictionary<string, double> retDictAPI = new Dictionary<string, double>();
        DateTime dateValue;
        DateTime.TryParse(positionDate, out dateValue);
        var HoldAPI = "SomeAPI";
        retDictAPI = ProcessImportFileAPI(HoldAPI);
        string ReturnVal = "Import is successful";
        return Content(ReturnVal);

    }
}

Есть идеи, что я делаю не так? Спасибо за помощь.

Вопрос:

У меня есть запрос ajax POST, который может занимать от 2 секунд до 30 + минут. Запрос на отправку происходит в результате нажатия кнопки

Если запрос занимает менее минуты или двух, он возвращается с ответом, и все работает нормально. Однако, если запрос занимает более двух минут, он возвращается с “Ошибка сети: XMLHttpRequest: Ошибка сети 0x2eff, не удалось завершить операцию из-за ошибки 00002eff”.

Конечно, он отлично работает Firefox и Chrome.

Приложение развертывается на сервере JBoss с включенным SSL. Архитектура здесь заключается в том, что у нас есть балансировщик нагрузки, который направляет запрос на два сервера Jboss.

Internet Explorer

Версия: 11.0.9600.180971C
Обновление: 11.0.25

Я пробовал следующее, но тщетно

1) ajax set cache to false – не работает

2) Изменены настройки реестра в соответствии с https://support.microsoft.com/en-us/kb/813827 – не работает, вот где это запутывает, thissuggests это не вещь IE, но в то же время это работает на chrome и ff, поэтому это не серверная вещь

3) Установите тайм-аут ajax на 0 – не работает
4) Добавлен e.preventDefault после $(‘# mdlSgn’). Click (function() {as jQuery Запросы Ajax отменяются без отправки

$('#mdlSgn').click(function() {
$('#cnfdsgl').modal('hide');

$.ajax({
url: ajaxUrl,
type: "POST",
data: JSON.stringify(input),
contentType: "application/json; charset=UTF-8",
dataType: "json",
success: function(data) {
/// some logic


},
error : function(jqXhr, textStatus, errorThrown) {
/// some logic
}
});

//some other logic
});

Ответ №1

может занимать от 2 до 30 минут

Я предполагаю, что это связано с большим объемом передаваемых данных.

У меня есть большой файловый загрузчик, который обрабатывает файлы размером 20 ГБ + и может длиться несколько часов.

По моему опыту – загрузка больших данных с помощью одного запроса ajax может вызвать странные сбои браузера (например, мой браузер Chrome сбой примерно в 20% тестов загрузки).

Самый надежный способ, который я нашел, – разделить данные на куски 1 МБ и отправить их последовательно на сервер с помощью отдельных запросов ajax.

Ответ №2

Мы проводим несколько дней в поисках причины этой проблемы!

  • В консоли: SCRIPT7002: XMLHttpRequest: Сетевая ошибка 0x2eff. Не удалось завершить операцию из-за ошибки 00002eff.
  • На вкладке сети IE/Edge мы видим неудавшийся запрос как “Ожидание…”
  • XmlHTTPRequest/JQuery возвращает ошибку 404 на клиенте, но сервер успешно возвратил ответ 200.

У нас была эта проблема только при использовании всего этого:

  • HTTP/2
  • POST-запросы
  • Windows 10
  • IE или Edge

По-видимому, это ошибка Windows 10 в стеке HTTP, которая теперь решается в Windows 10 версии 1803 (апрель 2018 года). Поэтому обычно эта проблема исчезает со временем для людей/компаний, использующих автоматические обновления Windows. Используется Windows 10 версии WorldWide

Мы проверили это на более старой и новой версии Windows 10, и она действительно решена.

Некоторое временное решение может быть:

  • отключите HTTP/2 для IE и Edge и используйте HTTPS (на стороне сервера).
  • используйте GET (если возможно)
  • PUT также имеет эту проблему?
  • сделать несколько попыток
  • принять, что пользователи IE/Edge будут наказаны 😉

Ответ №3

В моем случае это был пользовательский код ответа (3020), возвращенный с сервера. Переключил его на 200 и изменил логику клиента SPA, это решило проблему.

  • Xmeye пользователь заблокирован код ошибки 11303
  • Xmeye ошибка 604000 при входе
  • Xmeye ошибка 10005 что делать
  • Xmeye неизвестная ошибка 100000
  • Xmeye код ошибки 70218