Что касается кода возврата 0 для сетевых вызовов JavaScript fetch, XMLHttpRequest и MS XMLHTTP, у меня есть HTA( приложение Microsoft HTML-автономное приложение HTML + JavaScript), которое использует стандартный объект MS XMLHTTP COM (Microsoft.XMLHTTP или Msxml2.XMLHTTP в зависимости от обнаруженной версии) с помощью кода JavaScript для отправки некоторых данных обратно на сервер.
он возвращает код состояния 0. Это, по-видимому, не действительный код состояния HTTP (они должны быть три цифры в соответствии с официальная спецификация.) (Кстати, я попытался отключить сетевое соединение и получил код состояния 17003 или что-то в этом роде, что, как я думаю, из-за большого количества Google означает «поиск DNS-сервера не удался».)
Он отлично работает для меня и некоторых других людей, которые испытали ее из разных мест. Однако я отправил это клиенту, и они получили код состояния HTTP, равный нулю, а HTTP responseText пуст. Клиент попробовал его из двух мест, но оба в пределах своей корпоративной сеть.
Это HTTP-сообщение для HTTP-URL в Интернете (а не файл:// запрос, который, как я понимаю, также вернет код состояния 0 для успеха в Mozilla). Я уверен, что это код сбоя, так как он должен возвращать некоторое подтверждение как responseText, и мы не получаем данные, записанные в базе данных.
806
13
13 ответов:
Я считаю, что код ошибки указывает, что ответ был пуст, (так как даже заголовки не были возвращены). Это означает, что соединение было принято, а затем закрыто изящно (TCP FIN).
Есть несколько вещей, которые могут вызвать это, но на основе вашего описания, какая-то форма брандмауэра кажется наиболее вероятным виновником.
многие ответы здесь неверны. Кажется, люди выясняют, что вызывало статус==0 в их конкретном случае, а затем обобщают это как ответ.
практически говоря, status==0 для неудачного XmlHttpRequest следует считать неопределенной ошибкой.
фактическая спецификация W3C определяет условия, для которых здесь возвращается ноль:
https://fetch.spec.whatwg.org/#concept-network-errorКак вы можете видеть из спецификации (fetch или XmlHttpRequest) этот код может быть результатом ошибки, которая произошла еще до обращения к серверу.
некоторые из распространенных ситуаций, которые производят этот код состояния, отражены в других ответах, но это может быть любая или ни одна из этих проблем:
- запрос на незаконное перекрестное происхождение (см. CORS)
- блокировка брандмауэра или фильтрация
- сам запрос был отменен в коде
- установленное расширение браузера портит вещи
Что было бы полезно для браузеров, чтобы предоставить подробные отчеты об ошибках для большего количества этих сценариев status==0. Действительно, иногда status= = 0 будет сопровождать полезное консольное сообщение, но в других нет никакой другой информации.
для чего это стоит, в зависимости от браузера, вызовы AJAX на основе jQuery будут вызывать ваш обратный вызов успеха с кодом состояния HTTP 0. Мы нашли код состояния «0» обычно означает, что пользователь перешел на другую страницу до завершения AJAX-вызов.
не такой же технологический стек, как вы используете, но, надеюсь, полезно для кого-то.
wininet.dllвозвращает стандартные и нестандартные коды состояния, перечисленные ниже.401 - Unauthorized file 403 - Forbidden file 404 - File Not Found 500 - some inclusion or functions may missed 200 - Completed 12002 - Server timeout 12029,12030, 12031 - dropped connections (either web server or DB server) 12152 - Connection closed by server. 13030 - StatusText properties are unavailable, and a query attempt throws an exceptionдля кода состояния «ноль» вы пытаетесь сделать запрос на локальную веб-страницу, работающую на веб-сервере или без веб-сервера?
XMLHttpRequest status = 0 и XMLHttpRequest statusText = неизвестно могу помочь, если вы не используете свой скрипт на сервер.
обходной путь: что мы в конечном итоге делаем
мы решили, что это связано с проблемами брандмауэра, и поэтому мы придумали обходной путь, который сделал трюк. Если у кого есть такая же проблема, вот что мы сделали:
мы по-прежнему записываем данные в текстовый файл на локальном жестком диске, как и ранее, используя HTA.
когда пользователь нажимает кнопку «отправить данные обратно на сервер», HTA считывает данные и записывает HTML-страницу это включает в себя эти данные как остров данных XML (фактически с использованием языка сценариев=блок сценариев XML).
HTA запускает ссылку на HTML-страницу в браузере.
HTML-страница теперь содержит javascript, который отправляет данные на сервер (с помощью Microsoft.XMLHTTP).
надеюсь, что это поможет любому с аналогичным требованием. В данном случае это была Флеш игра, используемая на ноутбуке на выставках. У нас никогда не было доступа ноутбук и мог только отправить его по электронной почте клиенту, поскольку эта выставка проходила в другой стране.
код ответа HTTP 0 указывает, что запрос AJAX был отменен.
Это может произойти либо из таймаута, XHR аборта или брандмауэра топать на запрос. Тайм-аут является общим, это означает, что запрос не удалось выполнить в указанные сроки. В то XHR аборт-это очень просто сделать… вы действительно можете позвонить .abort () на объекте XMLHttpRequest для отмены вызова AJAX. (это хорошая практика для одной страницы приложения, если вы не хотите AJAX звонки возврат и попытка ссылаться на объекты, которые были уничтожены.) как уже упоминалось в отмеченном ответе, брандмауэр также будет способен отменить запрос и вызвать этот ответ 0.
XHR прервать:прервать Ajax запросы с помощью jQuery
var xhr = $.ajax({ type: "POST", url: "some.php", data: "name=John&location=Boston", success: function(msg){ alert( "Data Saved: " + msg ); } }); //kill the request xhr.abort()стоит отметить, что работает .метод abort () для объекта XHR также запускает обратный вызов ошибки. Если вы выполняете какую-либо обработку ошибок, которая анализирует эти объекты, вы быстро обратите внимание, что прерванный XHR и тайм-аут XHR идентичны, но с jQuery textStatus, который передается обратному вызову ошибки, будет «прерван», когда прерван и «тайм-аут» с тайм-аутом происходит. Если вы используете Zepto (очень похожий на jQuery), errorType будет «ошибка» при прерывании и «тайм-аут» при возникновении тайм-аута.
jQuery: error(jqXHR, textStatus, errorThrown); Zepto: error(xhr, errorType, error);
в моем случае статус стал 0, когда я забыл бы поставить WWW перед моим доменом. Потому что все мои запросы ajax были жестко закодированы http:/WWW.mydomain.com и веб-страница загружается будет просто http://mydomain.com это стало проблемой безопасности, потому что его другой домен. Я закончил тем, что сделал перенаправление в моем .файл htaccess, чтобы всегда ставить www впереди.
как подробно это ответ на этой странице, код состояния 0 означает, что запрос не удался по какой-то причине, и библиотека javascript интерпретировала сбой как код состояния 0.
чтобы проверить это вы можете сделать одно из следующих действий:
1) Используйте это расширение chrome,Requestly для перенаправления url-адреса из
httpsверсия вашего url кhttpверсия, так как это вызовет ошибку безопасности смешанного контента и в конечном итоге создаст код состояния 0. Преимущество этого подхода заключается в том, что вам не нужно менять свое приложение вообще, и вы можете просто «переписать» свой url с помощью этого расширения.2) Измените код вашего приложения, чтобы при необходимости сделать вашу конечную точку перенаправить на
httpверсия вашего url вместоhttpsверсия (или наоборот). В этом случае запрос завершится ошибкой с кодом состояния 0.
в моем случае это было потому, что вызов AJAX был заблокирован браузером из-за политика того же происхождения. Это была наименее ожидаемая вещь, потому что все мои HTMLs и скрипты, где обслуживаются из
127.0.0.1. Как можно считать, что они имеют разное происхождение?во всяком случае, первопричина была невинной на вид
<base>теги:<base href='<%=request.getScheme()%>://<%=request.getServerName() + ":" + request.getServerPort() + request.getContextPath()%>/'/>Я убрал
<base>тег, который мне, кстати, не нужен, и теперь он отлично работает!
кроме ли, вы можете найти дополнительную информацию о реальной причине, переключившись на синхронно запросы, так как вы получите также исключение :
function request(url) { var request = new XMLHttpRequest(); try { request.open('GET', url, false); request.send(null); } catch (e) { console.log(url + ': ' + e); } }например :
NetworkError: произошла сетевая ошибка.
в случае, если кто-то еще столкнется с этой проблемой, это давало мне проблемы из-за запроса AJAX и отправки обычного запроса формы. Я решил ее с помощью следующей строки:
<form onsubmit="submitfunc(); return false;">ключ есть возврат false, который заставляет форму не отправлять. Вы также можете просто вернуть false изнутри submitfunc(), но я нахожу, что явно пишу его, чтобы быть более ясным.
следует отметить, что загрузка файла ajax превышает
client_max_body_sizeдиректива для nginx вернет этот код ошибки.
Я нашел новую и недокументированную причину статуса = = 0. Вот что у меня было:
XMLHttpRequest.status === 0 XMLHttpRequest.readyState === 0 XMLHttpRequest.responseText === '' XMLHttpRequest.state() === 'rejected'Это не было перекрестным происхождением, сетью или из-за отмененных запросов (по коду или по навигации пользователя). Ничего в консоли разработчика или сетевом журнале.
Я мог бы найти очень мало документации по state () (Mozilla не перечисляет его, W3C делает), и ни один из них не упомянул «отклонено».
оказывается, это был мой рекламу (uBlock Origin в Firefox).
Ошибка «Произошла ошибка, повторите попытку позже», с которой пользователи Twitter сталкиваются при входе в приложение, может возникать по разным причинам.
«Произошла ошибка при входе в систему. Повторите попытку позже». Ошибка не позволяет многим пользователям войти в систему. Выдавая такую ошибку своим пользователям и не сообщая точно, почему они столкнулись с такой ошибкой, он предотвращает их вход в систему.
Из-за этой ошибки пользователи полностью отключаются от повестки дня и новостей, но пропускают свое взаимодействие. Это рассматривается как ошибка, из-за которой пользователи сожалеют о своем дне, ежедневно публикуя твиты и общаясь.
Почему я получаю сообщение об ошибке в Twitter? Произошла ошибка?

Twitter сказал: «Произошла ошибка при входе в систему. Повторите попытку позже». Многим пользователям доставляет головная боль своей ошибкой. Есть много причин, по которым мы получаем эту ошибку. Из этих; Приложение Twitter может быть устаревшим, в приложении может быть отсутствующий или поврежденный файл, время вашего телефона может быть неправильным, вас могут попросить изменить пароль Twitter, и поэтому вы можете столкнуться с такой ошибкой. Мы можем создать множество подобных причин.
Обычно этот тип проблем возникает на устройствах Iphone и Ipad, а также «com.twitter.tfs.authservice error 10». выдает ошибку. Пока мы не вмешиваемся в эти ошибки, кажется, что это раздражает пользователей твиттера, так как постоянно выдает ошибку.
Как исправить ошибку Twitter, когда произошла ошибка?
Twitter «Произошла ошибка при входе в систему. Повторите попытку позже». Мы можем найти решение, предложив вам несколько предложений по устранению ошибки.
1-) Убедитесь, что ваши настройки часов и часового пояса верны
Если ваше время и дата отображаются неправильно, выполните следующие действия;
Если у вас есть устройство Android;
- Перейти к настройкам.
- Перейти к дате и времени.
- Убедитесь, что на вашем телефоне правильное время.
- Убедитесь, что ваш телефон находится в правильном часовом поясе. Если нет, примените его на основе правильного часового пояса.
Если у вас устройство iOS;
- Открыть настройки.
- На открывшемся экране нажмите на опцию Общие.
- Откройте дату и время.
- Автоматически выключить и включить.
2-) Попробуйте войти в систему с вашим адресом электронной почты вместо имени пользователя
Если вы входите в систему, используя свое имя пользователя при входе в систему, попробуйте войти, введя свой адрес электронной почты. Если это не сработает, перейдем к предложению 3.
3-) Удалите и переустановите приложение
Обычно удаление и установка приложения волшебным образом решает ошибки, с которыми мы сталкиваемся в приложениях. Попробуем воспользоваться этим решением. Давайте попробуем полностью удалить приложение Twitter, переустановить его из Google Play Store или App Store и войти в систему. Если это не сработает, перейдем к предложению 4.
4-) Войти через веб-браузер
В некоторых случаях Twitter просит вас изменить пароль из-за другого события, но вы не можете изменить пароль из-за ошибки в фоновом режиме, и вы можете получить такую ошибку. Для этого попробуйте войти в систему, зайдя на сайт Twitter из веб-браузера, а не из приложения. Если вам будет предложено изменить пароль, попробуйте войти в систему из приложения Twitter, изменив его. Если это не сработает, перейдем к предложению 4.
5-) Включите и выключите модем или сотовые данные
Приложение Twitter могло рассматривать ваш IP-адрес как препятствие. Из-за этого вы можете столкнуться с такой ошибкой. Для этого, если вы подключаетесь через Wi-Fi, выключите и снова включите модем. Если вы подключаетесь с использованием мобильных данных, вы можете изменить свой IP-адрес, выключив и включив сотовые данные.
6-) Ограничение доступа к стране
Если ни одно из этих предложений вас не удовлетворило, возможно, Twitter ограничил доступ к вашей стране. Попробуйте войти в систему, загрузив любую программу vpn, чтобы мы могли разобраться. Если вам удалось войти в систему, Твиттер ограничил доступ к вашей стране.
Раздражает, когда какой-то сайт не загружается и отзывается непонятными ошибками. Обычно они сопровождаются одним из десятков HTTP-кодов, которые как раз намекают на характер сбоя, а также его вероятные причины.
В этом материале поговорим об ошибке 400 Bad Request. Почему она появляется и как ее исправить.
Чуть подробнее об ошибке 400
Как и другие коды, начинающиеся на четверку, 400 Bad Request говорит о том, что возникла проблема на стороне пользователя. Зачастую сервер отправляет ее, когда появившаяся неисправность не подходит больше ни под одну категорию ошибок.
Стоит запомнить — код 400 напрямую связан с клиентом (браузером, к примеру) и намекает на то, что отправленный запрос со стороны пользователя приводит к сбою еще до того, как его обработает сервер (вернее, так считает сам сервер).
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Из-за чего всплывает Bad Request?
Есть 4 повода для возникновения ошибки сервера 400 Bad Request при попытке зайти на сайт:
- Некорректно настроенные HTTP-заголовки в запросе со стороны клиента. Некоторые приложения и сайты мониторят заголовки на предмет наличия в них чего-нибудь подозрительного. Если ваш запрос не соответствует ожиданиям сервера, то высока вероятность появления ошибки 400 (но это не всегда вина пользователя).
- Такой же сбой появляется, если клиент пытается загрузить на сервер файл слишком большого размера. Это происходит, потому что на большинстве сайтов есть ограничения по размеру загружаемых данных. Причем ограничение может быть как в 2 гигабайта, так и в 600 килобайт.
- Еще ошибка 400 появляется, когда пользователь пытается получить доступ к несуществующей странице. То есть в браузер банально ввели ссылку с опечаткой, некорректным доменом или поддоменом.
- Устаревшие или измененные куки-файлы. Сервер может воспринять подмену куки-файлов как попытку атаковать или воспользоваться дырой в безопасности. Поэтому такие запросы сходу блокируются.
Читайте также
![]()
![]()
Исправляем ошибку 400 Bad Request на стороне клиента
Так как ошибка 400 в 99 случаев из 100 возникает на стороне клиента, начнем с соответствующих методов. Проверим все элементы, участвующие в передаче запроса со стороны клиента (браузера).
Проверяем адрес сайта
Банальщина, но необходимая банальщина. Перед тем как бежать куда-то жаловаться и предпринимать более серьезные шаги, повнимательнее взгляните на ссылку в адресной строке. Может, где-то затесалась опечатка или вы случайно написали большую букву вместо маленькой. Некоторые части адреса чувствительны к регистру.
А еще стоит поискать запрашиваемую страницу через поисковик, встроенный в сайт. Есть вероятность, что конкретная страница куда-то переехала, но сервер не может показать подходящий HTTP-код в духе 404 Not Found. Если, конечно, сам сайт работает.
Сбрасываем параметры браузера
Этот метод срабатывает, если сервер отказывается принимать запросы из-за «битых» куки или других данных. Дело в том, что сайт использует куки-файлы, чтобы хранить информацию о пользователе у него же в браузере. При входе конкретного человека на ресурс, он пытается распознать куки и сравнить информацию с той, что уже есть на сервере.
Иногда случается, что куки-файлы одного или нескольких пользователей вступают в конфликт. В таком случае надо открыть настройки браузера, а потом удалить весь кэш, куки и прочие связанные элементы.
В зависимости от браузера процесс удаления куки-файлов может немного отличаться. В Chrome это работает так:
- Открываем настройки браузера.
- Переходим в раздел «Конфиденциальность и безопасность».
- Выбираем «Файлы cookie и другие данные».
- Нажимаем на кнопку «Удалить все».

Для чистки cookies можно использовать стороннюю программу в духе CCleaner или CleanMyPC.
Загружаем файл подходящего размера
Если ошибка 400 Bad Request появляется при попытке загрузить на сайт какой-нибудь файл, то стоит попробовать загрузить файл поменьше. Иногда вебмастера ленятся грамотно настроить ресурс, и вместо понятного объяснения вроде «Загружаемые файлы не должны быть размером больше 2 мегабайт» люди получают Bad Request. Остается только гадать, какой там у них лимит.
Устраняем проблемы, связанные с Windows и сторонним софтом
Помимо браузера, на работу сети могут влиять другие программные продукты (экраны, защищающие от «непонятных подключений»). И вирусы. Да и сама Windows может стать проблемой. Почти любой ее компонент. Поэтому надо бы проделать следующее:
- Повторно установить NET.Framework. Желательно перед этим удалить предыдущую версию.
- Установить какой-нибудь приличный антивирус (а лучше два) и запустить глубокую проверку систему. Возможно, подключению и входу на ресурс мешает вредоносная программа.
- Если у вас уже установлен антивирус, то, наоборот, попробуйте его отключить. Иногда встроенные в них экраны проверки подключений блокируют работу браузера целиком или отдельных страниц. Лучше выдать браузеру больше прав на выполнение своих задач или установить антивирус, который более лояльно относится к установленному на компьютере софту.
- Еще надо поменять параметры брандмауэра. Его можно разыскать в панели управления Windows. Там надо добавить в список исключений ваш браузер. Тогда брандмауэр не будет мешать подключению к запрашиваемому сайту.
- Почистить Windows от программного мусора. Можно пройтись приложением CCleaner.
- Обновить драйверы для сетевых устройств.
- Обновить Windows или просканировать систему на наличие погрешностей в системных компонентах.
Ищем проблему на стороне сервера
Если что-то происходит на стороне ресурса, то это редко заканчивается ошибкой 400. Но все-таки есть несколько сценариев, при которых клиента обвиняют в сбое зря, а настоящая вина лежит на сервере.
Проверяем требования к HTTP-заголовкам
Пока настраиваешь сайт, несложно допустить ошибку или даже парочку. Возможно, требования к HTTP-заголовком указаны некорректно, и сервер ожидает запросы с ошибками, которые по объективным причинам не может распознать адекватно. Тогда администратору стоит перепроверить ожидаемые заголовки на своем сайте или в приложении.
Удаляем свежие обновления и плагины
Иногда ошибка 400 Bad Request появляется после обновления CMS или установки новых плагинов. Если у вас она появилась из-за этого, то наиболее логичное решение — откатиться до более ранней версии CMS и удалить все новые плагины.
Главное, перед этим сделать резервную копию данных. И перед установкой обновлений тоже стоило бы.
Проверяем состояние базы данных
Некоторые сторонние расширения для того же WordPress получают полный доступ к ресурсу и имеют право вносить изменения даже в подключенную базу данных. Если после удаления свежих плагинов ошибка 400 никуда не исчезла и появляется у всех, кто пытается зайти на сайт, стоит проверить, в каком состоянии находится база данных. Нужно вручную проверить все записи на наличие подозрительных изменений, которые могли быть сделаны установленными расширениями.
Исправляем ошибки в коде и скриптах
Ничего из вышеперечисленного не помогло? Тогда осталось проверить свой код и работающие скрипты. Лучше провести дебаггинг вручную и не надеяться на помощь компьютера. Сделать копию приложения или сайта, потом пошагово проверить каждый отрезок кода в поисках ошибок.
В крайнем случае придется кричать «полундра» и звать на помощь техподдержку хостинга. Возможно, возникли сложности на их стороне. Тогда вообще ничего не надо будет делать. Просто ждать, пока все исправят за вас.
На этом все. Основные причины появления 400 Bad Request разобрали. Как ее лечить — тоже. Теперь дело за вами. Пользуйтесь полученной информацией, чтобы больше не пришлось мучиться в попытках зайти на нужный ресурс.
У меня есть веб-служба ASP.NET Core 2.0, работающая на IIS. Один из методов контроллера выглядит примерно так:
[HttpGet()]
public IActionResult Test()
{
// do some db updates and get data
var result = DoSomeStuff();
// serialize data to byte array
var output = Serialize(result);
return File(output, "application/octet-stream");
}
Он выполняет некоторые обновления баз данных, записи запросов из таблицы, сериализует данные и отправляет их в качестве ответа. Данные отправляются в двоичном формате. Я использую MessagePack-CSharp как сериализатор.
Затем у меня есть клиентское приложение, которое общается с этим веб-сервисом. Это библиотека .NET Standard 2.0, на которую ссылается консольное приложение .NET 4.6.1. Я использую HttpClient для запроса и HttpResponseMessage.Content.ReadAsByteArrayAsync() для чтения ответа (точный код см. Ниже).
Я хотел сделать несколько тестов. У моей таблицы есть cca. 80 столбцов и содержит cca. 140000 записей. Все они должны быть отправлены клиенту. Получение данных из db занимает несколько секунд, затем все сериализуется и получается cca. 34 МБ отправляется клиенту.
У меня 10 клиентов. Когда они последовательно звонят в webservice, все работает. Когда я подчеркиваю вебсервис и клиенты огня параллельно, я почти всегда получаю ошибку на некоторых из них (обычно один или два не работают, иногда даже 4-5).
Исключено следующее: оно вызвано вызовом ReadAsByteArrayAsync:
System.AggregateException: One or more errors occurred. ---> System.Net.Http.HttpRequestException: Error while copying content to a stream. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)
at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
--- End of inner exception stack trace ---
at System.Net.ConnectStream.EndRead(IAsyncResult asyncResult)
at System.IO.Stream.<>c.<BeginEndReadAsync>b__43_1(Stream stream, IAsyncResult asyncResult)
at System.Threading.Tasks.TaskFactory`1.FromAsyncTrimPromise`1.Complete(TInstance thisRef, Func`3 endMethod, IAsyncResult asyncResult, Boolean requiresSynchronization)
...
---> (Inner Exception #0) System.Net.Http.HttpRequestException: Error while copying content to a stream. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)
at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
--- End of inner exception stack trace ---
at System.Net.ConnectStream.EndRead(IAsyncResult asyncResult)
at System.IO.Stream.<>c.<BeginEndReadAsync>b__43_1(Stream stream, IAsyncResult asyncResult)
at System.Threading.Tasks.TaskFactory`1.FromAsyncTrimPromise`1.Complete(TInstance thisRef, Func`3 endMethod, IAsyncResult asyncResult, Boolean requiresSynchronization)
...
Я нашел несколько потоков SO, связанных с таким исключением (например, здесь), поэтому я изначально думал, что это проблема, связанная с клиентом. Рекомендуемые ответы:
- переключение на HTTP 1.0
-
Connection: closeвместоConnection: keep-alive - наоборот.
Ничего не работало для меня. Я думаю, что я где-то читал, что в HttpClient была некоторая ошибка (теперь я не могу найти источник). Я попытался использовать новейший пакет System.Net.Http от Nuget. Та же проблема. Я создал консольное приложение .NET Core и использовал версию Core HttpClient. Та же проблема. Я использовал HttpWebRequest вместо HttpClient. Та же основная проблема.
Я запускал webservice и клиентов на той же машине VM. Чтобы исключить некоторые локальные проблемы, я запускаю клиенты одновременно с других компьютеров. Такая же проблема.
Итак, я закончил с упрощенным кодом (всего одно приложение с 10 потоками):
private async void Test_Click(object sender, RoutedEventArgs e)
{
try
{
var tasks = Enumerable.Range(1, 10).Select(async i => await Task.Run(async () => await GetContent(i))).ToList();
await Task.WhenAll(tasks);
MessageBox.Show(String.Join(Environment.NewLine, tasks.Select(t => t.Result.ToString())));
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private async Task<Int32> GetContent(Int32 id)
{
using (var httpClient = new HttpClient())
{
var url = "http://localhost/TestService/api/test";
using (var responseMessage = await httpClient.GetAsync(url).ConfigureAwait(false))
{
// just read everything and return length
// ReadAsByteArrayAsync throws sometimes an exception
var content = await responseMessage.Content.ReadAsByteArrayAsync();
return content.Length;
}
}
}
Мне было интересно узнать о фактическом трафике, поэтому я настраиваю Fiddler. Когда возникает ошибка, Fiddler показывает, что ответ действительно поврежден, и фактически была отправлена только часть предполагаемых данных (6 МБ, 20 МБ,… вместо 34 МБ). Похоже, что это прерывается случайным образом. Я играл некоторое время с Wireshark, и я увидел, что пакет RST/ACK отправляется с сервера, но я недостаточно хорош в анализе такой связи на низком уровне.
Итак, я сосредоточился на стороне сервера. Конечно, я дважды проверял, есть ли какое-либо исключение в методе контроллера. Все работает нормально. Я установил уровень журнала для отслеживания и поиска следующего в журнале:
info: Microsoft.AspNetCore.Server.Kestrel[28]
Connection id "0HL89D9NUNEOQ", Request id "0HL89D9NUNEOQ:00000001": the connection was closed becuase the response was not read by the client at the specified minimum data rate.
dbug: Microsoft.AspNetCore.Server.Kestrel[10]
Connection id "0HL89D9NUNEOQ" disconnecting.
...
info: Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv[14]
Connection id "0HL89D9NUNEOQ" communication error.
Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.Internal.Networking.UvException: Error -4081 ECANCELED operation canceled
Я не нашел ничего интересного и конкретного ASP.NET Core, связанного с этой ошибкой. Согласно этой документации, IIS имеет возможность указывать минимальную пропускную способность при отправке ответа клиенту со следующей настройкой:
<system.applicationHost>
<webLimits minBytesPerSecond="0"/>
</system.applicationHost>
Я использую его в своем Web.config, но он не имеет никакого эффекта (применим ли он к приложениям ASP.NET Core или установлен только полный режим?).
Я попытался вернуть FileStreamResult вместо FileContentResult, но опять же — это не помогло.
Аналогично клиенту я пытался найти минимальный воспроизводимый код для серверной части. Метод просто имел Thread.Sleep(8000) (вместо вызова db), затем сгенерировал случайный массив размером 50 Мбайт и вернул его. Это работало без каких-либо проблем, поэтому я предполагаю, что продолжу расследование в этом направлении. Я знаю, что db может быть узким местом здесь, но не уверен, как это может вызвать это (исключение таймаута, без взаимоблокировки,…).
Любые советы? Мне бы хотелось узнать, действительно ли это проблема с сервером или с клиентом.
| Номер ошибки: | Ошибка 0 | |
| Название ошибки: | ERROR_SUCCESS | |
| Описание ошибки: | Операция завершена | |
| Шестнадцатеричный код: | 0x0 | |
| Разработчик: | Microsoft Corporation | |
| Программное обеспечение: | Windows Operating System | |
| Относится к: | Windows XP, Vista, 7, 8, 10, 11 |
Повреждение, отсутствие или удаление файлов Windows 10 может привести к возникновению ошибок исполняемого файла ERROR_SUCCESS, которые чаще всего наблюдаются на этапе запуска 0x0. В большинстве случаев скачивание и замена файла ERROR_SUCCESS позволяет решить проблему. Кроме того, некоторые ошибки Windows 10 могут возникать по причине наличия неправильных ссылок на реестр. По этой причине для очистки недействительных записей рекомендуется выполнить сканирование реестра.
Распространенные проблемы Windows 10
Типичные ошибки Windows 10, возникающие в 0x0 для Windows:
- «Ошибка программного обеспечения Windows 10. «
- «Windows 10 не является программой Win32. «
- «Windows 10 должен быть закрыт. «
- «Windows 10 не может быть найден. «
- «Windows 10 не может быть найден. «
- «Ошибка запуска в приложении: Windows 10. «
- «Windows 10 не работает. «
- «Windows 10 остановлен. «
- «Неверный путь к приложению: Windows 10.»
Проблемы 0x0 Windows 10 возникают при установке, во время работы программного обеспечения, связанного с Windows 10, во время завершения работы или запуска или менее вероятно во время обновления операционной системы. Важно отметить, когда возникают проблемы Windows 10, так как это помогает устранять проблемы 0x0 (и сообщать в Microsoft Corporation).
Источники проблем Windows 10
Проблемы 0x0 и Windows 10 возникают из отсутствующих или поврежденных файлов, недействительных записей реестра Windows и вредоносных инфекций.
В первую очередь, проблемы Windows 10 создаются:
- Недопустимый Windows 10 или поврежденный раздел реестра.
- Файл Windows 10 поврежден от вирусной инфекции.
- Другая программа (не связанная с 0x0) удалила Windows 10 злонамеренно или по ошибке.
- Другая программа находится в конфликте с 0x0 и его общими файлами ссылок.
- 0x0 (Windows 10) поврежден во время загрузки или установки.
Продукт Solvusoft
Загрузка
WinThruster 2022 — Проверьте свой компьютер на наличие ошибок.
Совместима с Windows 2000, XP, Vista, 7, 8, 10 и 11
Установить необязательные продукты — WinThruster (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление
Коды системных ошибок Windows в базе знаний
Идентификатор статьи:
120869
Автор статьи:
Последнее обновление:
Популярность:
star rating here
Загрузка (Исправление ошибки)
Помогите разобраться с направлением куда двигаться.
Используя библиотеку requests, делаю get к
url = https://proverkacheka.nalog.ru:8888/v1/inns/*/kkts/*/fss/9288000100066036/tickets/31616?fiscalSign=3053767748&sendToEmail=no
вызывается исключение
‘Connection aborted.’, OSError(0, ‘Error’)
судя по стеку:
File «/usr/lib/python3.6/ssl.py», line 817, in __init__
self.do_handshake()
File «/usr/lib/python3.6/ssl.py», line 1077, in do_handshake
self._sslobj.do_handshake()
File «/usr/lib/python3.6/ssl.py», line 689, in do_handshake
self._sslobj.do_handshake()
OSError: [Errno 0] Error
исключение происходит при установлении ssl соединения
def do_handshake(self):
"""Start the SSL/TLS handshake."""
self._sslobj.do_handshake()
Обращение к http отрабатывает корректно, но необходим перейти на https.
Подскажите, кто из сторон разрывает соединение клиент или сервер? Если клиент, то есть ли возможность установить соединение, игнорируя проблемы ssl?
Пример кода вызова
headers = {"Device-Id": "123456789",
"Device-OS": "Adnroid 4.4.4",
"Version": "2",
"ClientVersion": "1.4.1.3",
"Host": "proverkacheka.nalog.ru:9999",
"Connection": "Keep-Alive",
"Accept-Encoding": "gzip",
"User-Agent": "okhttp/3.0.1"}
login = "+71234567890"
password = "123456"
requests.packages.urllib3.disable_warnings()
response = requests.get(url, headers = headers, auth=(login, password), verify=False)
Прошу не судить строго. Решил осваивать python на практических задачах
Как исправить систему Windows Ошибка 0 ERROR_SUCCESS
В этой статье представлена ошибка с номером Ошибка 0, широко известная как ERROR_SUCCESS, и ее описание Операция завершилась успешно.
О системной ошибке Windows
Системные ошибки Windows возникают в разное время во время нормального использования операционной системы. Пользователи должны получить код ошибки, который они могут использовать для анализа и расследования того, что произошло с компьютером. Однако эти коды не всегда предоставляют подробную информацию. А поскольку такие коды может выдавать и несистемное программное обеспечение, при анализе ошибок пользователю потребуется понимание контекста программы и времени выполнения. Вот несколько способов понять симптомы, причины и общие решения.
Симптомы Ошибка 0 — ERROR_SUCCESS
Во время обработки Windows отправляет коды системных ошибок, чтобы сообщить пользователю о проблеме, возникшей с компьютером. Они появляются в неожиданное время, поэтому их трудно обнаружить, если не проанализировать сообщение об ошибке. Коды системных ошибок Windows являются симптомами других проблем, происходящих с компьютером, поэтому пользователям необходимо обратить внимание на сообщение об ошибке, время и процессы, запущенные во время ее возникновения.

(Только для примера)
Причины ERROR_SUCCESS — Ошибка 0
Системные ошибки Windows могут быть вызваны программным или аппаратным сбоем. Иногда программное обеспечение не работает согласованно с аппаратным обеспечением из-за изменений или общих аппаратных сбоев. В некоторых случаях пользователи могли установить противоречивые драйверы или повредить ОС. Возможно, в каком-то компоненте произошел аномальный скачок напряжения, который может повредить детали и повлиять на его работу. Могли произойти различные факторы, которые привели к появлению ошибки System в определенные периоды использования компьютера. Проблемы с программным и аппаратным обеспечением, конечно, легко решаются, если пользователь может точно определить часть, которая вызывает сбой. Чтобы решить проблемы с ошибками такого рода, попробуйте следующие методы ремонта.
Методы ремонта
Если метод ремонта вам подошел, пожалуйста, нажмите кнопку upvote слева от ответа, это позволит другим пользователям узнать, какой метод ремонта на данный момент работает лучше всего.
Обратите внимание: ни ErrorVault.com, ни его авторы не несут ответственности за результаты действий, предпринятых при использовании любого из методов ремонта, перечисленных на этой странице — вы выполняете эти шаги на свой страх и риск.
Метод 2 — Обновите или переустановите драйвер
Изменения, внесенные в ваш компьютер, могут испортить ваш драйвер. В этом случае вы можете переустановить драйвер или обновить его. Для этого вы можете сделать следующее.
- Если вы получили код ошибки диспетчера устройств, обратите внимание на описание, чтобы вы могли точно определить драйвер или компонент, вызывающий ошибку.
- Запустите диспетчер устройств, выполнив поиск Диспетчер устройств или запустив «devmgmt.msc»
- Найдите драйвер в списке и щелкните его правой кнопкой мыши.
- Нажмите Удалить , если вы хотите переустановить драйвер, или Обновить программное обеспечение драйвера , если пытаетесь его обновить.
- Появится окно подтверждения. Убедитесь, что флажок Удалить программное обеспечение драйвера снят.
- Нажмите «ОК» и перезагрузите компьютер.
Вы можете сделать это поочередно:
- Вы можете вручную загрузить драйвер от производителя.
- Запустите его, чтобы заменить текущий драйвер, который вы используете.
- После этого перезагрузите компьютер.
Метод 1 — Восстановить поврежденные или отсутствующие системные файлы
Проверка системных файлов — этот инструмент работает почти так же, как программа проверки реестра, но помогает находить и восстанавливать поврежденные или отсутствующие системные файлы, поэтому его запуск занимает немного больше времени.
- Чтобы запустить команду, откройте командную строку с повышенными привилегиями, набрав ее в окне поиска, затем щелкните правой кнопкой мыши командную строку и выберите «Запуск от имени администратора».
- Введите в командной строке sfc / scannow и дождитесь успешного завершения процесса проверки.
Запустите Checkdisk — Chkdsk исправляет многие несоответствия с ОС. Системные ошибки также можно исправить с помощью этой утилиты. Чтобы запустить это,
- Откройте командную строку, введя ее в поле поиска, а затем, когда вы увидите результат в верхней части списка, щелкните его правой кнопкой мыши и выберите «Запуск от имени администратора».
- Ваша система может сказать, что вы не можете запустить ее в данный момент, потому что вы все еще обрабатываете данные, и спросит вас, хотите ли вы запустить ее перед следующим запуском, просто нажмите y для подтверждения, а затем выйдите с экрана и перезагрузите компьютер.
- После перезагрузки компьютера вы увидите, что checkdisk работает вне Windows, просто дайте ему закончить, пока он не даст вам отчет о том, что было найдено, исправлено или отмечено.
- Закройте окно и дайте компьютеру нормально перезагрузиться.
Метод 3 — Откатите свой драйвер
Вы также можете вернуться к исходному драйверу, установленному на вашем компьютере. Для этого:
- В диспетчере устройств найдите проблемный драйвер.
- Щелкните устройство правой кнопкой мыши и выберите «Свойства».
- Когда вы увидите окно «Свойства», щелкните вкладку «Драйвер».
- Вы увидите кнопку «Откатить драйвер», нажмите ее.
- Подтвердите откат, нажав «Да», когда появится вопрос «Вы уверены, что хотите вернуться к ранее установленному программному обеспечению драйвера?»
- После этого перезагрузите компьютер.
Метод 4 — Использовать восстановление системы
Для окна 7
- Нажмите «Пуск»> «Все программы»> «Стандартные»> «Системные инструменты».
- Нажмите «Восстановление системы», а затем нажмите «Далее».
- Выбирайте точку восстановления, когда знаете, что с вашим компьютером все в порядке.
- Продолжайте нажимать «Далее», а затем — «Готово».
- Это займет время, так что наберитесь терпения и дождитесь полной остановки операции.
Для Windows 8, 8.1 или 10
- Щелкните правой кнопкой мыши кнопку «Пуск», затем выберите «Система».
- В окне «Система» нажмите «Система и безопасность».
- Нажмите «Система» и слева нажмите «Защита системы».
- Нажмите «Восстановление системы», следуйте инструкциям, чтобы выбрать точку восстановления, а затем нажимайте «Далее», пока не увидите кнопку «Готово».
- Дождитесь завершения процесса восстановления.
Метод 5 — Восстановите переустановку с помощью компакт-диска с ОС или флэш-накопителя
- Лучший способ восстановить системное программное обеспечение — это переустановить его. Процесс восстановления и переустановки помогает сохранить файлы при восстановлении операционной системы. Тем не менее, вам нужно убедиться, что вы создали резервную копию своего файла, если вам действительно нужно переустановить компьютер. Вам нужно будет вставить установочный носитель и перезагрузить компьютер.
- Войдите в BIOS, процесс отличается от модели компьютера к модели, это может быть кнопка F1, F2 или Del.
- Оказавшись там, перейдите в раздел загрузки, установите загрузку с установочного диска и сохраните настройки.
- Для более ранней версии Windows вам может потребоваться нажать на клавиатуру, пока вы ждете, пока компьютер не получит доступ к установочному диску.
- Сначала выберите утилиту восстановления, а не чистую установку ОС. Это может сэкономить вам много хлопот. Однако, если проблема не исчезнет после перезагрузки компьютера, просто сделайте резервную копию файлов и выполните чистую переустановку.
Другие языки:
How to fix Error 0 (ERROR_SUCCESS) — The operation completed successfully.
Wie beheben Fehler 0 (ERROR_SUCCESS) — Der Vorgang wurde erfolgreich abgeschlossen.
Come fissare Errore 0 (ERROR_SUCCESS) — L’operazione è stata completata con successo.
Hoe maak je Fout 0 (ERROR_SUCCESS) — De bewerking is succesvol voltooid.
Comment réparer Erreur 0 (ERROR_SUCCESS) — L’opération s’est bien déroulée.
어떻게 고치는 지 오류 0 (ERROR_SUCCESS) — 작업이 성공적으로 완료되었습니다.
Como corrigir o Erro 0 (ERROR_SUCCESS) — A operação foi completa com sucesso.
Hur man åtgärdar Fel 0 (ERROR_SUCCESS) — Operationen var lyckad.
Jak naprawić Błąd 0 (ERROR_SUCCESS) — Operacja zakończona sukcesem.
Cómo arreglar Error 0 (ERROR_SUCCESS) — La operación se completó con éxito.
Об авторе: Фил Харт является участником сообщества Microsoft с 2010 года. С текущим количеством баллов более 100 000 он внес более 3000 ответов на форумах Microsoft Support и создал почти 200 новых справочных статей в Technet Wiki.
Следуйте за нами:
Последнее обновление:
05/11/22 05:43 : Пользователь Windows 10 проголосовал за то, что метод восстановления 2 работает для него.

Этот инструмент восстановления может устранить такие распространенные проблемы компьютера, как синие экраны, сбои и замораживание, отсутствующие DLL-файлы, а также устранить повреждения от вредоносных программ/вирусов и многое другое путем замены поврежденных и отсутствующих системных файлов.
ШАГ 1:
Нажмите здесь, чтобы скачать и установите средство восстановления Windows.
ШАГ 2:
Нажмите на Start Scan и позвольте ему проанализировать ваше устройство.
ШАГ 3:
Нажмите на Repair All, чтобы устранить все обнаруженные проблемы.
СКАЧАТЬ СЕЙЧАС
Совместимость

Требования
1 Ghz CPU, 512 MB RAM, 40 GB HDD
Эта загрузка предлагает неограниченное бесплатное сканирование ПК с Windows. Полное восстановление системы начинается от $19,95.
ID статьи: ACX013963RU
Применяется к: Windows 10, Windows 8.1, Windows 7, Windows Vista, Windows XP, Windows 2000
Совет по увеличению скорости #93
Установите оптимальные настройки BIOS:
Стоит проверить параметры BIOS и настроить их на оптимальные параметры, особенно если у вас старый или сделанный на заказ компьютер. Вы можете ускорить загрузку, изменив важные настройки, такие как кеш-память ЦП, режим передачи данных IDE / SATA и драйверы. Вы также можете установить тайминги памяти и быструю / быструю загрузку, если она доступна.
Нажмите здесь, чтобы узнать о другом способе ускорения работы ПК под управлением Windows
Ошибки в алфавитном порядке: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Логотипы Microsoft и Windows® являются зарегистрированными торговыми марками Microsoft. Отказ от ответственности: ErrorVault.com не связан с Microsoft и не заявляет о такой связи. Эта страница может содержать определения из https://stackoverflow.com/tags по лицензии CC-BY-SA. Информация на этой странице представлена исключительно в информационных целях. © Copyright 2018