Webexception базовое соединение закрыто непредвиденная ошибка при передаче

I’m writing a .NET application which is supposed to post data to another .NET application.
I use the following code to request the login page

WebProxy proxy = new WebProxy("http://proxy:80/", true);
HttpWebRequest webRequest = WebRequest.Create(LOGIN_URL) as HttpWebRequest;
//proxy.Credentials = new NetworkCredential("myusername", "mypassword", "domain"); 
// webRequest.Proxy = proxy;
webRequest.Proxy = WebRequest.DefaultWebProxy;

StreamReader responseReader = new StreamReader
                                  (webRequest.GetResponse().GetResponseStream());
string responseData = responseReader.ReadToEnd();

but it fails on this line

StreamReader responseReader = new StreamReader
                                  (webRequest.GetResponse().GetResponseStream());

with the error message :

System.Net.WebException: The underlying connection was closed: The connection was 
                         closed unexpectedly.

SteveC's user avatar

SteveC

15.8k23 gold badges103 silver badges174 bronze badges

asked Sep 22, 2009 at 11:19

Kwah009's user avatar

5

In my case, this solved the problem:

System.Net.ServicePointManager.Expect100Continue = false;

and none of the above.

SuleymanSah's user avatar

SuleymanSah

17.2k5 gold badges33 silver badges54 bronze badges

answered Oct 6, 2012 at 23:40

Ivan Ičin's user avatar

Ivan IčinIvan Ičin

9,6825 gold badges36 silver badges58 bronze badges

2

I encountered the same exception a while ago and I remember that this happens in some cases due to a bug in .NET. You can work around this by setting the Timeout and ReadWriteTimeout of the request to higher values, or set KeepAlive to false.

This would only be a workaround, though, so I suggest you try to find the actual root cause before assuming anything.

I’ll try to come up with some web references, in the mean time, look at
Big files uploading (WebException: The connection was closed unexpectedly)

Community's user avatar

answered Sep 22, 2009 at 11:38

Rik's user avatar

RikRik

28.5k14 gold badges49 silver badges67 bronze badges

1

Seems like to possible issues:

  1. You never assign the proxy you create to your HttpWebRequest

    WebProxy **proxy** = new WebProxy("http://proxy:80/", true);
    HttpWebRequest webRequest = WebRequest.Create(LOGIN_URL) as HttpWebRequest;
    //proxy.Credentials = new NetworkCredential("myusername", "mypassword", "domain"); 
    // webRequest.Proxy = proxy;
    webRequest.Proxy = **WebRequest.DefaultWebProxy**;
    

    You should assign it like this:

    WebProxy proxy = new WebProxy("http://proxy:80/", true);
    HttpWebRequest webRequest = WebRequest.Create(LOGIN_URL) as HttpWebRequest;
    webRequest.Proxy = proxy;
    

    (notice the difference in the last line).

  2. You use port 80 on your proxy. Sure that is correct? Many proxies use port 8080.

Malachi's user avatar

Malachi

3,2044 gold badges29 silver badges46 bronze badges

answered Dec 4, 2009 at 11:37

Erik A. Brandstadmoen's user avatar

2

I had this issue once. My virus protection was the culprit.

answered May 29, 2015 at 15:59

Dan Gifford's user avatar

Dan GiffordDan Gifford

8861 gold badge9 silver badges33 bronze badges

Faced the same error for using http GET for an API that used https. Might be of help to someone.

answered Jun 28, 2021 at 6:15

Jehan Perera's user avatar

In my case I needed to setup proxy settings to allow not only HTTP but HTTPS on the same port as well, because one of requests was sent by HTTPS protocol.

answered Apr 15, 2014 at 20:49

dred17's user avatar

dred17dred17

1392 silver badges17 bronze badges

It was different case for me. Query was taking too long hence connection was timing out. There are five timeouts in WCF
1. Send Timeout — Default 1 min
2. Receive Timeout — Default 1 min
3. Open Timeout — Default 1 min
4. Close Timeout — Default 1 min
5. Inactivity Timeout- Default 10 min

I had set Send and Receive time out correctly but problem was due inactivity timeout as query was too long on server, WCF Service was closing channel hence it was failing to transmit back the response.
Hope this helps if you are using WCF to get response from server which takes long time to run.

answered May 8, 2015 at 15:31

Softec's user avatar

SoftecSoftec

1,09711 silver badges15 bronze badges

myHttpWebRequest.Credentials = CredentialCache.DefaultCredentials;

this is the solution

animuson's user avatar

animuson

53.9k28 gold badges137 silver badges147 bronze badges

answered Jun 30, 2010 at 13:09

Mak's user avatar

Доброго времени суток, помогите решить проблему : при попытке сделать запрос на сайт sscasino.online дает ошибку xNet.HttpException" в xNet.dll ("Не удалось установить SSL-соединение с HTTP-сервером 'sscasino.online'.") xNet.HttpException (xNET)

и

System.Net.WebException" в System.dll ("Базовое соединение закрыто: Непредвиденная ошибка при передаче.") System.Net.WebException (WebRequest)

request.UserAgent = useragent;
request.IgnoreProtocolErrors = true;
request.SslCertificateValidatorCallback += (sender, certificate, chain, sslPolicyErrors) => true;

var result = request.Get(link);

и

  WebRequest req = WebRequest.Create(Url);
  WebResponse resp = req.GetResponse();
  Stream stream = resp.GetResponseStream();
  StreamReader sr = new StreamReader(stream);
  string Out = sr.ReadToEnd();
  sr.Close();

При этом, если включить http debbuger pro, то запросы идут нормально. Тестил на
нескольких машинах

задан 22 июн 2017 в 8:45

Lolidze's user avatar

3

xNet не будет работать из коробки:

  • xNet основан на SslStream и использует протокол по умолчанию: sslStream.AuthenticateAsClient(address.Host); xNet GitHub
  • протокол SslStreamу должен быть уcтановлен так:
    sslStream.AuthenticateAsClient(address.Host, null, SslProtocols.Tls12, true); MSDN

Два варианта:

  • внести вклад в GitHub xNet с изменением выше
  • cкомпилировать xNet локально с изменением выше

ТАКЖЕ:

Можно попытаться установить протокол по умолчанию где-нибудь вначале (Global.asax -> Startup если есть):

System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;

или

ServicePointManager.SecurityProtocol |= (SecurityProtocolType)3072;

Я не пытался проверить, работает ли этот последний вариант

ответ дан 29 июн 2017 в 17:56

user270576's user avatar

user270576user270576

4814 серебряных знака6 бронзовых знаков

1

Для WebRequest надо было добавить строку ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Для xNet так и не разобрался

ответ дан 22 июн 2017 в 9:44

Lolidze's user avatar

LolidzeLolidze

1,3701 золотой знак12 серебряных знаков26 бронзовых знаков

Для того чтобы получить контент страницы можно воспользоваться классом HttpClient из библиотеки Microsoft HTTP Client Libraries:

private static async Task<string> GetContentFromPageAsync(string page)
{
    System.Net.ServicePointManager.SecurityProtocol = 
            SecurityProtocolType.Tls12 | 
            SecurityProtocolType.Tls11 | 
            SecurityProtocolType.Tls;

    using (var client = new HttpClient())
    using (var response = await client.GetAsync(page))
    using (var content = response.Content)
    {
         var result = await content.ReadAsStringAsync();
         return result;
    }
}

Использование:

static void Main(string[] args)
{
    var content = GetContentFromPageAsync("https://sscasino.online/").Result;
    Console.WriteLine(content);
}

// Создаем прокси.
var proxyUri = string.Format("{0}:{1}", proxyServerAddress, proxyServerPort);
var proxyCredential = new NetworkCredential(proxyUserName, proxyUserPassword);

var proxy = new WebProxy(proxyUri, false)
{
    UseDefaultCredentials = false,
    Credentials = proxyCredential
};

// Создаем ClientHandler.
HttpClientHandler httpClientHandler = new HttpClientHandler()
{
    Proxy = proxy,
    PreAuthenticate = true,
    UseDefaultCredentials = false,
};

var client = new HttpClient(httpClientHandler);

ответ дан 27 июн 2017 в 11:57

sp7's user avatar

sp7sp7

5,2793 золотых знака20 серебряных знаков39 бронзовых знаков

11

Протоколы HTTP через SSL используют правильно выданный сертификат для проверки.
Можно исползовать делегат RemoteCertificateValidationCallback для проверки SSL-сертификата.

public static void ConnSSL()
{
 WebRequest request = WebRequest.Create(Url);
request.Proxy = null;
request.Credentials = CredentialCache.DefaultCredentials;
//Проверяет  SSL-сертификаты
ServicePointManager.ServerCertificateValidationCallback += new  System.Net.Security.RemoteCertificateValidationCallback(ValidateServerCertificate);

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
}
public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
      return true;
}  

Дополнительная информация о RemoteCertificateValidationCallback

protected override WebRequest GetWebRequest(Uri uri)
{
     HttpWebRequest webRequest = (HttpWebRequest) base.GetWebRequest(uri);
     webRequest.KeepAlive = false;
     return webRequest;
}  

ссылка GetWebRequest

ответ дан 27 июн 2017 в 12:23

Vardan Vardanyan's user avatar

Vardan VardanyanVardan Vardanyan

1,3071 золотой знак13 серебряных знаков30 бронзовых знаков

3

C Sharp

Сегодня получится краткий обзор об исключении, которое возникает при попытке получить содержимое страницы с использованием метода GetResponse() класса WebRequest. При этом страницы сайтов, получаемые через незащищенное соединение (протокол HTTP), отрабатывают без каких-либо ошибок. А вот, если вы захотите получить страницу через защищенное соединение (протокол HTTPS), то могут возникнуть некоторые трудности.

Внимание! Не для всех страниц с протоколом HTTPS возникает исключительная ситуация. Например, исключение может быть при использовании сайтом бесплатного сертификата Let’s Encrypt, использующего TLS шифрование.

Самые распространенные исключения, которые возникают:

System.Net.WebException: "Базовое соединение закрыто: Непредвиденная ошибка при передаче.

"IOException: Не удается прочитать данные из транспортного соединения: Удаленный хост принудительно разорвал существующее подключение.

SocketException: Удаленный хост принудительно разорвал существующее подключение

Ниже приведу пример кода для получения содержимого web-страницы (рабочий вариант):

using System;
using System.IO;
using System.Net;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string url = "https://www.petrolplus.ru";

            // Без этой строки возможно выскакивание исключения!
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

            WebRequest request = WebRequest.Create(url);
            request.Credentials = CredentialCache.DefaultCredentials;

            WebResponse response = request.GetResponse();  
            Console.WriteLine(((HttpWebResponse)response).StatusDescription);
            Stream dataStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(dataStream);
            string responseFromServer = reader.ReadToEnd();
            Console.WriteLine(responseFromServer);
            reader.Close();
            response.Close();

            Console.ReadKey();
        }
    }
}

Как видно из примера кода строка ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 гарантирует, что не будет проблем с сертификатом. Здесь мы присваиваем протокол TLS 1.2.

Спасибо всем за внимание.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Я получаю эту ошибку только на одном сервере под управлением 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;

4b9b3361

Ответ 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 было написано «что такое мой пользовательский агент»

  • Remove From My Forums
  • Вопрос

  • При настройке WAP возникает ошибка: Базовое соединение закрыто: При попытке установления отношений доверия со службой федерации произошла
    ошибка. Ошибка: Базовое соединение закрыто: Непредвиденная ошибка при передаче.. ADFS установлен и настроен. Сертификат был импортирован с закрытым ключом и содержит 3 имени (имя сервера wap, adfs и имя службы ADFS). Все
    имена серверов используется внутренние. Трафик между хостами полностью разрешен. 
    Может
    кто сталкивался?

Ответы

    • Помечено в качестве ответа

      6 февраля 2017 г. 7:31

  • 1. Для имени AD FS при установке WAP нужно использовать msk-i-ca-adfs.internet.lan — именно это значение прописано в хостовой части URL, идентифицирующего ферму AD FS (Identifier). Хотя, если SNI при связи WAP-AD FS не используется
    (как посмотреть это, я не знаю), может пройти и adfs.internet.lan.

    2. Сертификат Service Communication у вас выглядит сомнительно. Чтобы сертификат был действительным для нескольких имён DNS, они должны быть добавлены в расширение Subject Alternative Name (к сожалению, его в выдаче не видно) ,
    а в Subject Name в части CN=… (Common Name) должно быть указано только одно, основное имя.

    3. Сертификат SSL на сервере AD FS я вообще не увидел. Обычно он совпадает с Service Communication Certificate, но у вас почему-то не так (Thumbprint не совпадает). Так что смотрите на него сами (certutil -dump файл_сертификата). Требования
    там по именам те же: «основное» имя DNS в Common Name из Subject Name, а все остальные (можно — вместе с основным) — в Subject Alternate Name.


    Слава России!

    • Помечено в качестве ответа
      Petko KrushevMicrosoft contingent staff, Moderator
      6 февраля 2017 г. 7:31
Ошибка ‘Не найдено ни одного сервера с размещенным сервисом’    оглавление    Ошибка ‘Запрос был прерван: Не удалось создать защищенный канал SSL/TLS’.

2022-08-23T15:04:56+00:00

Проблема

Начиная с 13.08.2022 перестали скачиваться исправления (патчи) к конфигурациям с ошибкой:

«The underlying connection was closed: An unexpected error occurred on a send»

или то же самое на русском

«Базовое соединение закрыто: Непредвиденная ошибка при передаче.»

Временное решение

Как временное решение, можно использовать:

  • установку исправлений (патчей) из самой 1С
  • из обновлятора из локальной папки: ссылка

Причина и ход решения

15.08.2022 Предварительно, я полагаю, что у сервиса 1С изменились технические требования к версии протокола шифрования, который используется для соединения (исправления, в отличие от обновлений скачиваются через API соответствующего сервиса 1С). Сегодня (в понедельник) я приступил к решению проблемы — на днях будет новый билд, я напишу о его выходе в соц. сетях (vk, tg) и на этой страничке.

16.08.2022 Да, дело в изменившейся минимальной версии TLS, которую требует сервис 1С для скачивания исправлений. Сегодня, максимум завтра выйдет новая версия обновлятора, где часть кода, ответственная за скачивание исправлений будет вынесена в отдельный исполняемый файл, который для своего выполнения потребует также установленный на компьютере .Net Framework 4.5 (в большинстве современных ОС он уже входит в систему).  Это ещё один довод в пользу запланированного на начало следующего года полного перехода на эту версию фреймворка (сейчас большая часть функционала обновлятора требует только .Net Framework 3.5).

16.08.2022 Вышла версия обновлятора от 16 августа с решением возникшей проблемы. Нажмите кнопку «Скачать новый обновлятор» внизу главного окна уже установленного обновлятора. Восстановлена возможность скачивания исправлений (патчей). Обратите внимание, что для скачивания исправлений (патчей) теперь необходим также установленный .Net Framework 4.5 или выше (он уже предустановлен в большинстве современных ОС). После обновления обновлятора на эту версию сразу проверьте возможность скачивания новых исправлений — если необходимой версии .Net Framework у вас на компьютере нет — обновлятор скажет об этом и даст соответствующую ссылку для установки. На начало 2023 года запланирован полный переход обновлятора на .Net Framework 4.5: ссылка.

23.08.2022 На старых ОС для корректной работы TLS должны быть установлены некоторые обновления, иначе возникает ошибка ‘Не удалось создать защищенный канал SSL/TLS’ или ‘Could not create SSL/TLS secure channel’: подробнее здесь.

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Владимир Милькин

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

Ошибка ‘Не найдено ни одного сервера с размещенным сервисом’    оглавление    Ошибка ‘Запрос был прерван: Не удалось создать защищенный канал SSL/TLS’.

Ошибка при конфигурации сервера через мастер конфигурации: Базовое соединение закрыто. Непредвиденная ошибка при передаче/приеме. Взаимодействие клиента и сервера невозможно, т.к. у них разный алгоритм работы.

Проблема встречается, если принудительно отключить протоколы старых версий SSLTLS, например через GPO.

Решение: 

Включение TLS1.0, TLS1.1, TLS1.2 и настройка strong cryptography для .NET Framework: https://docs.microsoft.com/en-us/mem/configmgr/core/plan-design/security/enable-tls-1-2-server#bkmk_net

Добавление веток реестра:

[HKEY_LOCAL_MACHINESOFTWAREMicrosoft.NETFrameworkv2.0.50727]
      «SystemDefaultTlsVersions» = dword:00000001
      «SchUseStrongCrypto» = dword:00000001

[HKEY_LOCAL_MACHINESOFTWAREMicrosoft.NETFrameworkv4.0.30319]
      «SystemDefaultTlsVersions» = dword:00000001
      «SchUseStrongCrypto» = dword:00000001 

[HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoft.NETFrameworkv2.0.50727]
      «SystemDefaultTlsVersions» = dword:00000001
      «SchUseStrongCrypto» = dword:00000001

[HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoft.NETFrameworkv4.0.30319]
      «SystemDefaultTlsVersions» = dword:00000001
      «SchUseStrongCrypto» = dword:00000001

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.0Client]
«Enabled»=dword:ffffffff
«DisabledByDefault»=dword:00000000

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.0Server]
«Enabled»=dword:ffffffff
«DisabledByDefault»=dword:00000000

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.1Client]
«Enabled»=dword:ffffffff
«DisabledByDefault»=dword:00000000

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.1Server]
«Enabled»=dword:ffffffff
«DisabledByDefault»=dword:00000000

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Client]
«Enabled»=dword:ffffffff
«DisabledByDefault»=dword:00000000

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Server]
«Enabled»=dword:ffffffff
«DisabledByDefault»=dword:00000000

Примечание: Данные настройки могут быть сброшены GPO!

при попытке восстановить пакеты nuget я получаю следующее: —

1 ошибка базовое соединение закрыто: непредвиденная ошибка при передаче.

Ошибка 2 базовое соединение было закрыто: не удалось установить отношения доверия для безопасного канала SSL/TLS.

Ошибка 3 команда » «D:root.из NuGetNuGet для.exe » установить «D:rootpackages — … config «- source «» — неинтерактивный-RequireConsent-solutionDir «D:root «» выход с кодом 1.

Ошибка 4 файла метаданных ‘D:rootproject — … Вебсайт.dll » не удалось найти D:rootproject — … Unit-тестов КБК

Я попробовал решения, представленные на:Visual Studio 2010 nuget ошибка: базовое соединение было закрыто: не удалось установить отношения доверия для безопасного канала SSL/TLS

Я попытался решений по: https://nuget.codeplex.com/discussions/275537

никто из них не работает, мне было интересно, есть ли у кого-нибудь еще эта проблема? Если да, то кто-нибудь придумал решение?

Это, по-видимому, может быть ожидание игры, для SSL-сертификатов, которые будут исправлены.

после некоторой дальнейшей отладки с Fiddler я получил следующий ответ:

скрипач.сеть.https> HTTPS рукопожатие az320820.vo.msecnd.net не удалось. Система.ИО.IOException не удалось прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным узлом.

Если я прав, кажется, что меня отвергают, но сервер, не уверен, почему, и я надеюсь, что это скоро разрешит его самостоятельно.

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

кто-то любезно поднял вопрос о коде plex, поэтому, надеюсь, мы скоро куда-нибудь попадем:https://nuget.codeplex.com/workitem/4372

обновление

по состоянию на 17 ноября, это, кажется, снова работает. NuGet правильно говорит мне, что у него проблемы с получением более старой версии Ninject.Сеть.Общий.3.2.0.0 но у нас есть обновленная версия, которая в порядке.

5 ответов


У меня была такая же проблема, пока я не вызвал своих сетевых администраторов. Мы обнаружили, что наш IPS помечен домен как вредоносное ПО, и мы заблокировали его на уровне нашей внутренней сети.

Как только мы удалили блок, все теперь снова работает.

У нас также были проблемы с получением изображений и css с сайтов проекта codeplex, и это также исправило эту проблему.


Я вижу этот вопрос за корпоративным прокси-сервера с помощью Visual студии 2015, которая использует новые В3 API-интерфейс (https://api.nuget.org/v3/index.json). В моем экземпляре, это связано с поддержкой SSL перехват корпоративного прокси (оживленном), что не знает, как обращаться с новой шифра протокола (например, протокол TLS 1.2, плюс некоторые новые обмен ключами шифра), который обсуждается, что конечную точку API, я считаю.


быстрое исправление для пользователей Visual Studio 2015 заключается в изменении URL-адреса с https на http. У меня такое чувство, что это может не сработать, если пакет имеет файл лицензии https.

или переключитесь на Visual Studio 2013 для установки и обновления пакетов.


проверьте, работает ли подключение к интернету, и ваш прокси-сервер настроен и включен в настройках локальной сети Internet Explorer. В моем случае он пытался загрузить его из интернета и не смог, так как мой прокси был отключен! Надеюсь, это поможет…


введите команду

В Linux
Перед выполнением команды Git выполните в командной строке следующее:

export GIT_TRACE_PACKET=1;export GIT_TRACE=1;export GIT_CURL_VERBOSE=1

На Windows
Перед выполнением команды Git выполните в командной строке следующее:

set GIT_TRACE_PACKET=1 set GIT_TRACE=1 set GIT_CURL_VERBOSE=1

C Sharp

Сегодня получится краткий обзор об исключении, которое возникает при попытке получить содержимое страницы с использованием метода GetResponse() класса WebRequest. При этом страницы сайтов, получаемые через незащищенное соединение (протокол HTTP), отрабатывают без каких-либо ошибок. А вот, если вы захотите получить страницу через защищенное соединение (протокол HTTPS), то могут возникнуть некоторые трудности.

Внимание! Не для всех страниц с протоколом HTTPS возникает исключительная ситуация. Например, исключение может быть при использовании сайтом бесплатного сертификата Let’s Encrypt, использующего TLS шифрование.

Самые распространенные исключения, которые возникают:

System.Net.WebException: "Базовое соединение закрыто: Непредвиденная ошибка при передаче.

"IOException: Не удается прочитать данные из транспортного соединения: Удаленный хост принудительно разорвал существующее подключение.

SocketException: Удаленный хост принудительно разорвал существующее подключение

Ниже приведу пример кода для получения содержимого web-страницы (рабочий вариант):

using System;
using System.IO;
using System.Net;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string url = "https://www.petrolplus.ru";

            // Без этой строки возможно выскакивание исключения!
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

            WebRequest request = WebRequest.Create(url);
            request.Credentials = CredentialCache.DefaultCredentials;

            WebResponse response = request.GetResponse();  
            Console.WriteLine(((HttpWebResponse)response).StatusDescription);
            Stream dataStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(dataStream);
            string responseFromServer = reader.ReadToEnd();
            Console.WriteLine(responseFromServer);
            reader.Close();
            response.Close();

            Console.ReadKey();
        }
    }
}

Как видно из примера кода строка ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 гарантирует, что не будет проблем с сертификатом. Здесь мы присваиваем протокол TLS 1.2.

Спасибо всем за внимание.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

I’m writing a .NET application which is supposed to post data to another .NET application.
I use the following code to request the login page

WebProxy proxy = new WebProxy("http://proxy:80/", true);
HttpWebRequest webRequest = WebRequest.Create(LOGIN_URL) as HttpWebRequest;
//proxy.Credentials = new NetworkCredential("myusername", "mypassword", "domain"); 
// webRequest.Proxy = proxy;
webRequest.Proxy = WebRequest.DefaultWebProxy;

StreamReader responseReader = new StreamReader
                                  (webRequest.GetResponse().GetResponseStream());
string responseData = responseReader.ReadToEnd();

but it fails on this line

StreamReader responseReader = new StreamReader
                                  (webRequest.GetResponse().GetResponseStream());

with the error message :

System.Net.WebException: The underlying connection was closed: The connection was 
                         closed unexpectedly.

SteveC's user avatar

SteveC

15.2k23 gold badges98 silver badges173 bronze badges

asked Sep 22, 2009 at 11:19

Kwah009's user avatar

5

In my case, this solved the problem:

System.Net.ServicePointManager.Expect100Continue = false;

and none of the above.

SuleymanSah's user avatar

SuleymanSah

16.1k5 gold badges31 silver badges50 bronze badges

answered Oct 6, 2012 at 23:40

Ivan Ičin's user avatar

Ivan IčinIvan Ičin

9,3745 gold badges36 silver badges52 bronze badges

2

I encountered the same exception a while ago and I remember that this happens in some cases due to a bug in .NET. You can work around this by setting the Timeout and ReadWriteTimeout of the request to higher values, or set KeepAlive to false.

This would only be a workaround, though, so I suggest you try to find the actual root cause before assuming anything.

I’ll try to come up with some web references, in the mean time, look at
Big files uploading (WebException: The connection was closed unexpectedly)

Community's user avatar

answered Sep 22, 2009 at 11:38

Rik's user avatar

RikRik

28.2k14 gold badges49 silver badges67 bronze badges

1

Seems like to possible issues:

  1. You never assign the proxy you create to your HttpWebRequest

    WebProxy **proxy** = new WebProxy("http://proxy:80/", true);
    HttpWebRequest webRequest = WebRequest.Create(LOGIN_URL) as HttpWebRequest;
    //proxy.Credentials = new NetworkCredential("myusername", "mypassword", "domain"); 
    // webRequest.Proxy = proxy;
    webRequest.Proxy = **WebRequest.DefaultWebProxy**;
    

    You should assign it like this:

    WebProxy proxy = new WebProxy("http://proxy:80/", true);
    HttpWebRequest webRequest = WebRequest.Create(LOGIN_URL) as HttpWebRequest;
    webRequest.Proxy = proxy;
    

    (notice the difference in the last line).

  2. You use port 80 on your proxy. Sure that is correct? Many proxies use port 8080.

Malachi's user avatar

Malachi

3,2064 gold badges28 silver badges46 bronze badges

answered Dec 4, 2009 at 11:37

Erik A. Brandstadmoen's user avatar

2

I had this issue once. My virus protection was the culprit.

answered May 29, 2015 at 15:59

Dan Gifford's user avatar

Dan GiffordDan Gifford

8791 gold badge8 silver badges33 bronze badges

Faced the same error for using http GET for an API that used https. Might be of help to someone.

answered Jun 28, 2021 at 6:15

Jehan Perera's user avatar

In my case I needed to setup proxy settings to allow not only HTTP but HTTPS on the same port as well, because one of requests was sent by HTTPS protocol.

answered Apr 15, 2014 at 20:49

dred17's user avatar

dred17dred17

1392 silver badges17 bronze badges

It was different case for me. Query was taking too long hence connection was timing out. There are five timeouts in WCF
1. Send Timeout — Default 1 min
2. Receive Timeout — Default 1 min
3. Open Timeout — Default 1 min
4. Close Timeout — Default 1 min
5. Inactivity Timeout- Default 10 min

I had set Send and Receive time out correctly but problem was due inactivity timeout as query was too long on server, WCF Service was closing channel hence it was failing to transmit back the response.
Hope this helps if you are using WCF to get response from server which takes long time to run.

answered May 8, 2015 at 15:31

Softec's user avatar

SoftecSoftec

1,05711 silver badges14 bronze badges

myHttpWebRequest.Credentials = CredentialCache.DefaultCredentials;

this is the solution

animuson's user avatar

animuson

53.2k28 gold badges142 silver badges147 bronze badges

answered Jun 30, 2010 at 13:09

Mak's user avatar

I’m writing a .NET application which is supposed to post data to another .NET application.
I use the following code to request the login page

WebProxy proxy = new WebProxy("http://proxy:80/", true);
HttpWebRequest webRequest = WebRequest.Create(LOGIN_URL) as HttpWebRequest;
//proxy.Credentials = new NetworkCredential("myusername", "mypassword", "domain"); 
// webRequest.Proxy = proxy;
webRequest.Proxy = WebRequest.DefaultWebProxy;

StreamReader responseReader = new StreamReader
                                  (webRequest.GetResponse().GetResponseStream());
string responseData = responseReader.ReadToEnd();

but it fails on this line

StreamReader responseReader = new StreamReader
                                  (webRequest.GetResponse().GetResponseStream());

with the error message :

System.Net.WebException: The underlying connection was closed: The connection was 
                         closed unexpectedly.

SteveC's user avatar

SteveC

15.2k23 gold badges98 silver badges173 bronze badges

asked Sep 22, 2009 at 11:19

Kwah009's user avatar

5

In my case, this solved the problem:

System.Net.ServicePointManager.Expect100Continue = false;

and none of the above.

SuleymanSah's user avatar

SuleymanSah

16.1k5 gold badges31 silver badges50 bronze badges

answered Oct 6, 2012 at 23:40

Ivan Ičin's user avatar

Ivan IčinIvan Ičin

9,3745 gold badges36 silver badges52 bronze badges

2

I encountered the same exception a while ago and I remember that this happens in some cases due to a bug in .NET. You can work around this by setting the Timeout and ReadWriteTimeout of the request to higher values, or set KeepAlive to false.

This would only be a workaround, though, so I suggest you try to find the actual root cause before assuming anything.

I’ll try to come up with some web references, in the mean time, look at
Big files uploading (WebException: The connection was closed unexpectedly)

Community's user avatar

answered Sep 22, 2009 at 11:38

Rik's user avatar

RikRik

28.2k14 gold badges49 silver badges67 bronze badges

1

Seems like to possible issues:

  1. You never assign the proxy you create to your HttpWebRequest

    WebProxy **proxy** = new WebProxy("http://proxy:80/", true);
    HttpWebRequest webRequest = WebRequest.Create(LOGIN_URL) as HttpWebRequest;
    //proxy.Credentials = new NetworkCredential("myusername", "mypassword", "domain"); 
    // webRequest.Proxy = proxy;
    webRequest.Proxy = **WebRequest.DefaultWebProxy**;
    

    You should assign it like this:

    WebProxy proxy = new WebProxy("http://proxy:80/", true);
    HttpWebRequest webRequest = WebRequest.Create(LOGIN_URL) as HttpWebRequest;
    webRequest.Proxy = proxy;
    

    (notice the difference in the last line).

  2. You use port 80 on your proxy. Sure that is correct? Many proxies use port 8080.

Malachi's user avatar

Malachi

3,2064 gold badges28 silver badges46 bronze badges

answered Dec 4, 2009 at 11:37

Erik A. Brandstadmoen's user avatar

2

I had this issue once. My virus protection was the culprit.

answered May 29, 2015 at 15:59

Dan Gifford's user avatar

Dan GiffordDan Gifford

8791 gold badge8 silver badges33 bronze badges

Faced the same error for using http GET for an API that used https. Might be of help to someone.

answered Jun 28, 2021 at 6:15

Jehan Perera's user avatar

In my case I needed to setup proxy settings to allow not only HTTP but HTTPS on the same port as well, because one of requests was sent by HTTPS protocol.

answered Apr 15, 2014 at 20:49

dred17's user avatar

dred17dred17

1392 silver badges17 bronze badges

It was different case for me. Query was taking too long hence connection was timing out. There are five timeouts in WCF
1. Send Timeout — Default 1 min
2. Receive Timeout — Default 1 min
3. Open Timeout — Default 1 min
4. Close Timeout — Default 1 min
5. Inactivity Timeout- Default 10 min

I had set Send and Receive time out correctly but problem was due inactivity timeout as query was too long on server, WCF Service was closing channel hence it was failing to transmit back the response.
Hope this helps if you are using WCF to get response from server which takes long time to run.

answered May 8, 2015 at 15:31

Softec's user avatar

SoftecSoftec

1,05711 silver badges14 bronze badges

myHttpWebRequest.Credentials = CredentialCache.DefaultCredentials;

this is the solution

animuson's user avatar

animuson

53.2k28 gold badges142 silver badges147 bronze badges

answered Jun 30, 2010 at 13:09

Mak's user avatar

Здравствуйте!
Помогите понять в чем проблема.
Делаю GET запрос на сайт, используя HttpWebRequest. Запрос не проходит. Возникает WebExeption:
«Базовое соединение закрыто: Непредвиденная ошибка при передаче. System.IO.IOException: Не удается прочитать данные из транспортного соединения: Удаленный хост принудительно разорвал существующее подключение.»
При этом пару недель назад все работало.

C#
1
2
3
4
5
6
7
8
9
10
11
12
            string briefingPath = @"https://www.briefing.com";           
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(briefingPath));
            request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
            request.ContentType = "application/x-www-form-urlencoded";
            request.Accept = "text/html, application/xhtml+xml, */*";
            request.Headers.Add(HttpRequestHeader.AcceptLanguage, "ru-RU");
            request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
                  
            
 
            HttpWebResponse myHttpWebResponse = (HttpWebResponse)request.GetResponse();
            ...

Добавлено через 15 часов 59 минут
Надо было добавить в код

Добавлено через 26 секунд
Надо был добавить в код

C#
1
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11;

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

Доброго всем времени суток!

Я хочу использовать Client Application Services, для этого решил ознакомиться и попробовать пройти примеры из этой ссылки: http://msdn.microsoft.com/en-us/library/bb546195(v=VS.90).aspx

Поначалу все было хорошо. Но теперь все время выскакивает ошибка — Базовое соединение закрыто: Непредвиденная ошибка при приеме. При вызове метода:

bool isAuthorized = false;
  try
  {
  // Call ValidateUser with empty strings in order to display the 
  // login dialog box configured as a credentials provider.
  isAuthorized = Membership.ValidateUser(
   String.Empty, String.Empty); // <--- ЗДЕСЬ ошибка

  
  }
  catch (System.Net.WebException)
  {
  if (DialogResult.OK == MessageBox.Show(
   "Unable to access the authentication service." +
   Environment.NewLine + "Attempt login in offline mode?",
   "Warning", MessageBoxButtons.OKCancel,
   MessageBoxIcon.Warning))
  {
   ConnectivityStatus.IsOffline = true;
   isAuthorized = Membership.ValidateUser(
   String.Empty, String.Empty);
   
   
  }
  }

  if (!isAuthorized)
  {
  MessageBox.Show("Unable to authenticate.", "Not logged in",
   MessageBoxButtons.OK, MessageBoxIcon.Error);
  Application.Exit();
  }
  return isAuthorized;
 }

Подскажите что случилось с вэб сервисом? 

P.S. Когда вэб-сервис работал, через профайлер sql сервера я видел обращения к базе. Сейчас же никаких обращений нет.

Дополнение: VS 2008 SP1 .NET 3.5 Windows XP

Используется внутренний вэб сервер студии — ASP.NET Development Server

Во время возникновения ошибки с Событиях Windows появляются следующие сообщения:

Код события: 3005 

Сообщение о событии: Возникло необработанное исключение. 

Время события: 26.10.2010 13:21:55 

Время события (UTC): 26.10.2010 9:21:55 

Идентификатор события: 249a08db8bee4c059cbb12343a99ff13 

Последовательность событий: 2 

Появление события: 1 

Код подробностей события: 0 

Сведения о приложении: 

    Домен приложения: 7b2c11fe-1-129325585149428287 

    Уровень доверия: Full 

    Виртуальный путь к приложению: /ProfitWeb 

    Путь к приложению: E:WIN_DEVELOPProfitAuthServiceProfitWeb 

    Имя компьютера: PORAA 

Сведения о процессе: 

    Идентификатор процесса: 3740 

    Имя процесса: WebDev.WebServer.exe 

    Имя учетной записи: ID_BLABLAporaa 

Сведения об исключении: 

    Тип исключения: HttpException 

    Сообщение об исключении: После передачи заголовков HTTP перенаправление невозможно. 

Сведения о запросе: 

    URL запроса: http://localhost:55555/ProfitWeb/Authentication_JSON_AppService.axd/Login 

    Путь запроса: /ProfitWeb/Authentication_JSON_AppService.axd/Login 

    Адрес узла пользователя: 127.0.0.1 

    Пользователь:  

    Проверка подлинности: False 

    Тип проверки подлинности:  

    Имя учетной записи потока: ID_BLABLAporaa 

Сведения о потоке: 

    Идентификатор потока: 4 

    Имя учетной записи потока: ID_BLABLAporaa 

    Выполняется олицетворение: False 

    Трассировка стека:    в System.Web.HttpResponse.Redirect(String url, Boolean endResponse)

   в System.Web.Security.FormsAuthenticationModule.OnLeave(Object source, EventArgs eventArgs)

   в System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()

   в System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Подробности пользовательского события: 

Дополнительные сведения можно найти в центре справки и поддержки, в «http://go.microsoft.com/fwlink/events.asp».

Понравилась статья? Поделить с друзьями:
  • Webdav ошибка 0x800700df windows 10
  • Webdav ошибка 403
  • Web2l activex control ошибка загрузки криптографической подсистемы нрд
  • Web of science произошла системная ошибка
  • Web ошибка 419