С# System.Net.WebException: базовое соединение было закрыто: произошла непредвиденная ошибка при отправке
Я получаю эту ошибку только на одном сервере под управлением Windows Server 2003:
System.Net.WebException: Подключенное соединение было закрыто: произошла непредвиденная ошибка при отправке.
Вот мой код... Любые идеи?
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https:// URL HERE ");
//request.Headers.Add("Accept", "application/xml");
byte[] bytes;
bytes = System.Text.Encoding.ASCII.GetBytes(xml);
request.KeepAlive = false;
request.Accept = "application/xml";
request.ContentType = "application/xml; charset='UTF-8'";
request.ContentLength = bytes.Length;
request.Method = "POST";
request.Timeout = 10000;
request.ServicePoint.Expect100Continue = false;
Ответы
Ответ 1
Эта проблема возникает, когда клиентский компьютер не может отправить HTTP-запрос. Клиентский компьютер не может отправить HTTP-запрос, поскольку соединение было закрыто или недоступно. Эта проблема может возникнуть, когда клиентский компьютер отправляет много данных. Чтобы решить эту проблему, см. Разрешения A, D, E, F и O.
https://support.microsoft.com/en-us/kb/915599
Ответ 2
Настройка HttpWebRequest.KeepAlive на false не помогла мне.
Поскольку я обращался к HTTPS-странице, мне пришлось установить протокол безопасности точки доступа в Tls12.
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Обратите внимание, что существуют другие SecurityProtocolTypes:
SecurityProtocolType.Ssl3
SecurityProtocolType.Tls
SecurityProtocolType.Tls11
Итак, если Tls12 не работает для вас, попробуйте три оставшихся параметра.
Также обратите внимание, что вы можете установить несколько протоколов. Это предпочтительнее в большинстве случаев.
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12| SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
Ответ 3
Я получал ту же ошибку, используя RestSharp с .NET 4.5. Я тестировал один и тот же URL-адрес с cURL, и он работал нормально. После долгого отладки я обнаружил, что установка SecurityProtocol исправила проблему.
Смотрите: "Основное соединение было закрыто: произошла непредвиденная ошибка при отправке." С сертификатом SSL
Ответ 4
В моем случае я забыл удалить "s" с "https", когда я менял URL-адреса между средами. Я бил Localhost с https при аварии. То же самое произойдет, если вы нажмете HTTP-сайт без сертификата https или сертификат с истекшим сроком действия.
Ответ 5
Я столкнулся с этой ошибкой, когда я вручную развертывал пакет nuget для сервера nexus вручную из командной строки с API-KEY.
Я проверил конфигурацию сервера nexus, и я понял, что Nexus NuGet API-Key Realm не активирован. Я активировал его и снова попытался, все работало нормально.
![введите описание изображения здесь]()
Итак, вы должны проверить серверную сторону, чтобы подтвердить, что вы активировали связанные сферы.
Ответ 6
Эта проблема может возникнуть в этом случае, вам нужно скачать ссылку, которая является ссылкой фильтра, и у вас нет разрешения на загрузку этой ссылки.
Ответ 7
Я получаю эту ошибку при попытке загрузить файл rss с помощью HttpWebRequest. Когда я проверил в браузере и проверил коды ответов, URL-адрес был в порядке. Попробовав все здесь, мне пришло в голову, что сайт может блокироваться на основе User Agent.
Изменение строки User Agent в запросе сработало:
let request = WebRequest.Create(url) :?> HttpWebRequest
request.UserAgent <- @"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
let response = request.GetResponse()
Строка этого пользовательского агента появилась из-за того, что в Google Chrome было написано "что такое мой пользовательский агент"