2015-04-27 8 views
8

Я получаю эту ошибку только на одном сервере под управлением Windows Server 2003:C# System.Net.WebException: Базовое соединение закрыто: Непредвиденная ошибка при посылке

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; 
+0

Какая линия бросает исключение? –

+0

@ На вашем URL-адресе есть https, и похоже, что Cert может быть недействительным. Вы должны принять сертификат. ServicePointManager.ServerCertificateValidationCallback = delegate {return true; }; Попробуйте добавить это. – loneshark99

+0

@ loneshark99 No.Это ужасный и грязный хак, который никогда не следует вводить в производственный код. Протокол https полностью обрабатывается HttpWebRequest; нет необходимости в ручном возиться с безопасным подключением tcp. – Nyerguds

ответ

3

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

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

+3

сообщите нам, какая из опций (A, D, E, F, O) работает для вас –

+0

Я получаю сообщение об ошибке в HttpWebRequest request = (HttpWebRequest) WebRequest.Create. Запрос составляет всего 200 символов. – Jon

+0

Я получаю ту же ошибку с приведенным выше кодом – Jon

9

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

См: "The underlying connection was closed: An unexpected error occurred on a send." With SSL Certificate

+1

Это. Это в основном связано с сайтами, использующими более высокую версию SSL/TLS, чем разрешено и/или поддерживается используемой инфраструктурой .Net. – Nyerguds

1

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

13

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

он работает. Благодарю. –

+1

Поскольку это выбор стандартов безопасности, лучше всего пойти с последним (TLS 1.2), а не просто делать то, что работает. Фактически SSL3 [официально запрещен к использованию с 2015 года] (https://tools.ietf.org/html/rfc7568), а TLS 1.0 [вероятно, будет запрещен в июне 2018 года) (https: //blog.pcisecuritystandards. орг/мигрирующие-из-SSL-и-начале-TLS). –

0

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

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

enter image description here

Таким образом, Вы должны проверить на стороне сервера, чтобы подтвердить, что вы активировали связанные сферы.

 Смежные вопросы

  • Нет связанных вопросов^_^