Как да коригирате „Съществуваща връзка е принудително затворена от грешката на отдалечения хост?

Отдалечен компютър е този, който няма физическо присъствие; достъпът до него е само чрез някаква компютърна мрежа. Дистанционният хост е компютърът, домакин на мрежата, който хоства отдалечения компютър, а отдалеченият клиент е потребителят на отдалечения клиент в мрежата. Тази функция революционизира много процеси и има голям обхват и в бъдеще.

Съществуваща връзка беше принудително затворена от локалната грешка на хоста

Въпреки това, съвсем наскоро се появиха много отчети за грешка „ съществуваща връзка, която беше насилствено затворена от отдалечения хост “, докато се опитваше да се свърже с отдалечения хост. Тази грешка се задейства със сокетна връзка между клиент и сървър. В тази статия ще предоставим някои жизнеспособни решения за пълното отстраняване на тази грешка, както и да ви информираме за причините, които предизвикват тази грешка.

Какво причинява „Съществуваща връзка беше насилствено затворена от грешката на отдалечения хост“ в Windows?

След като получихме множество отчети от множество потребители, решихме да проучим проблема и създадохме набор от решения, за да го отстраним. Също така разгледахме причините, поради които се задейства, и ги изброихме по-долу.

  • TLS 1.1 / 1.0 Използване: Ако приложението работи на TLS 1.1 или TLS 1.0, това може да предизвика тази грешка поради амортизацията им. TLS 1.2 е пътят при избора на протокола, който приложението използва.
  • Криптография е деактивирана: Ако криптографията е деактивирана за вашето устройство, тя ще предотврати използването на TLS 1.2 и ще се върне обратно на TLS 1.0, което може да предизвика грешката.
  • Изпълнение на сокета : В някои случаи определен тип реализация на сокета задейства грешката. Има грешка с някои реализации от приложението „.NET“ и това може да причини тази грешка.
  • Липсващ код: За някои хора, които използват Entity Framework, беше наблюдавано, че липсва определен ред код, поради който грешката се задейства.
  • Остаряла рамка „.NET“: В определени случаи, ако рамката „.NET“ е деактивирана, тази грешка може да се задейства. Някои задачи изискват рамката „.NET“ да бъде актуализирана до най-новата версия, за да работи правилно.

Сега, когато имате основно разбиране за същността на проблема, ще преминем към решенията. Уверете се, че ги прилагате в конкретния ред, в който са представени, за да избегнете конфликти.

Решение 1: Активиране на криптографията

Ако криптографията е деактивирана за вашето устройство, използването на TLS 1.2 е забранено. Следователно в тази стъпка ще дадем възможност за криптография. За това:

  1. Натиснете “ Windows ” + “ R ”, за да отворите подканата Run.
  2. Въведете „regedit“ и натиснете „ Enter “.

    Въведете „Regedit“ и натиснете „Enter“
  3. Навигирайте до следния адрес
     HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ v4.0.3031 

    Придвижете се до този адрес, ако няма стойност „ SchUseStrongCrypto “ в десния прозорец.

     HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ .NETFramework \ v4.0.30319 
  4. В десния прозорец щракнете двукратно върху опцията „ SchUseStrongCrypto “ и въведете „ 1 “ като стойност на данните.

    Кликнете два пъти върху стойността „SchUseStrongCrypto“ в десния прозорец
  5. Кликнете върху „ OK “, за да запазите промените си, и проверете дали проблемът продължава.

Решение 2: Принуждаване на TLS 1.2 Употреба

Ако приложението е конфигурирано да използва TLS 1.1 или TLS 1.0 вместо TLS 1.2, това може да предизвика тази грешка. Следователно в тази стъпка ще конфигурираме компютъра си да използва TLS 1.2. За това:

  1. Отворете корена на сайта и кликнете с десния бутон върху файла „global.asax“ .
  2. Изберете „ Преглед на кода “ от списъка.
  3. Трябва да има метод „ Application_Start “, добавете следния ред код към този метод
     ако (ServicePointManager. SecurityProtocol. HasFlag (SecurityProtocolType. Tls12) == false) ServicePointManager. SecurityProtocol = ServicePointManager. SecurityProtocol 

    Добавяне на редовете към кода
  4. Запазете промените си и проверете дали проблемът продължава.

Решение 3: Промяна на реализацията на сокета

Ако определена реализация на сокет има грешка или бъг в него, това може да попречи на някои елементи на приложението да функционират правилно, поради което тази грешка може да се задейства. Следователно в тази стъпка ще го конфигурираме, за да използва различна реализация. За това:

  1. Уверете се, че имате клас „ StateObjec t“ с „ публичен байт [] буфер = нов байт [1024], обществен сокет сокет; ".
  2. Обадете се на функцията „ Получаване (Socket s) “ и извикайте следния код в „ void ReceiveCallback (IAsyncResult ar)
      SocketError errorCode ; int nBytesRec = socket . EndReceive ( ar, out errorCode ); if ( errorCode != SocketError . Success ) { nBytesRec = 0 ; } 
  3. Проверете дали проблемът продължава след прилагане на този код.

Решение 4: Добавяне на командни линии (само за Entity Framework)

Ако използвате Entity Framework, възможно е определен ред код да липсва. Следователно в тази стъпка ще добавим този ред код, за да отстраним този проблем. За това:

  1. Отворете файла „ .edmx “ и отворете файла „ .context.tt “ под него.
  2. Отворете файла „ .context.cs “ и добавете следния ред код към вашия конструктор
      public DBEntities () : base ( "name=DBEntities" ) { this . Configuration . ProxyCreationEnabled = false ; // ADD THIS LINE ! } 
  3. Проверете дали проблемът продължава, след като добавите този ред код.

Решение 5: Актуализиране на .NET Framework

Най-новата версия на .NET Framework е необходима, за да може всичко да работи безпроблемно. Следователно в тази стъпка ще изтеглим най-новата версия от сайта и ще я инсталираме. За това:

  1. Отворете тази връзка, за да изтеглите настройката.
  2. Изпълнете файла „ .exe “, за да стартирате процеса на инсталиране.

    Изпълнение на изпълним файл, изтеглен от Microsoft
  3. Следвайте екранните инструкции, за да инсталирате приложението на вашия компютър.
  4. Проверете дали проблемът продължава след завършване на инсталацията.

Интересни Статии