Система C#.Сеть.WebException: базовое соединение было закрыто: произошла непредвиденная ошибка при отправке

Я получаю эту ошибку только на одном сервере под управлением Windows Server 2003 с:

Система.Сеть.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;

6 ответов


эта проблема возникает, если клиентский компьютер не может отправить HTTP-запрос. Клиентский компьютер не может отправить HTTP-запрос, так как соединение закрыто или недоступно. Эта проблема может возникнуть, когда клиентский компьютер отправляет много данных. Чтобы решить эту проблему, см. резолюции A, D, E, F и O.

https://support.microsoft.com/en-us/kb/915599


установка 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;

Я получал ту же ошибку, используя RestSharp с .NET 4.5. Я тестировал тот же URL с cURL, и он работал нормально. После долгой отладки я обнаружил, что установка SecurityProtocol исправила проблему.

посмотреть: "базовое соединение закрыто: непредвиденная ошибка при передаче."С сертификатом SSL


в моем случае я забыл удалить "s" из "https", когда я обменивался URL-адресами между средами. Я случайно попал в Localhost с https. То же самое произойдет, если вы нажмете http-сайт без сертификата https или истекшего сертификата.


Я столкнулся с этой ошибкой во время развертывания пакета nuget на nexus server вручную из командной строки с помощью API-ключа.

Я проверил конфигурацию сервера nexus, и я понял, что Nexus NuGet API-Key Realm не активирован. Я активировал его и попробовал снова, все работало нормально.

enter image description here

Итак, вы должны проверить серверную сторону, чтобы подтвердить, что вы активировали связанные области.


эта проблема может возникнуть в этом случае, вы захотите загрузить ссылку, которая является ссылкой фильтра, и у вас нет разрешения на загрузку этой ссылки.