Jak naprawić błąd „Istniejące połączenie zostało przymusowo zamknięte przez host zdalny”?

Komputer zdalny to taki, który nie ma fizycznej obecności; można uzyskać do niego dostęp tylko za pośrednictwem sieci komputerowej. Host zdalny to komputer hostujący sieć, która obsługuje komputer zdalny, a klient zdalny jest użytkownikiem klienta zdalnego w sieci. Ta funkcja zrewolucjonizowała wiele procesów i ma również duży zakres w przyszłości.

Istniejące połączenie zostało przymusowo zamknięte przez błąd hosta lokalnego

Jednak całkiem niedawno pojawiło się wiele raportów o błędzie „ istniejące połączenie zostało przymusowo zamknięte przez hosta zdalnego ” podczas próby połączenia się z hostem zdalnym. Ten błąd jest wywoływany przez połączenie gniazda między klientem a serwerem. W tym artykule przedstawimy kilka realnych rozwiązań, aby całkowicie naprawić ten błąd, a także poinformujemy Cię o przyczynach tego błędu.

Co powoduje błąd „Istniejące połączenie zostało przymusowo zamknięte przez hosta zdalnego” Błąd w systemie Windows?

Po otrzymaniu licznych raportów od wielu użytkowników postanowiliśmy zbadać problem i opracowaliśmy zestaw rozwiązań, aby go naprawić. Przyjrzeliśmy się również przyczynom, dla których został on uruchomiony, i wymieniliśmy je poniżej.

  • Wykorzystanie TLS 1.1 / 1.0: Jeśli aplikacja działa na TLS 1.1 lub TLS 1.0, może wyzwalać ten błąd z powodu utraty wartości. Przy wyborze protokołu używanego przez aplikację należy korzystać z TLS 1.2.
  • Wyłączone szyfrowanie: Jeśli szyfrowanie zostało wyłączone na twoim komputerze, uniemożliwi to korzystanie z TLS 1.2 i powróci do TLS 1.0, co może spowodować błąd.
  • Implementacja gniazda: W niektórych przypadkach określony typ implementacji gniazda powoduje błąd. Występuje błąd w niektórych implementacjach aplikacji „.NET” i może powodować ten błąd.
  • Brakujący kod: W przypadku niektórych osób korzystających z Entity Framework zaobserwowano, że brakuje określonego wiersza kodu, z powodu którego był wyzwalany błąd.
  • Nieaktualne środowisko „.NET”: W niektórych przypadkach, jeśli środowisko „.NET” zostało wyłączone, ten błąd może zostać wyzwolony. Niektóre zadania wymagają zaktualizowania frameworku „.NET” do najnowszej wersji, aby działały poprawnie.

Teraz, gdy masz podstawową wiedzę na temat natury problemu, przejdziemy do rozwiązań. Pamiętaj, aby zaimplementować je w określonej kolejności, w jakiej są przedstawione, aby uniknąć konfliktów.

Rozwiązanie 1: Włączanie kryptografii

Jeśli szyfrowanie zostało wyłączone na twoim komputerze, użycie TLS 1.2 jest zabronione. Dlatego na tym etapie włączymy Kryptografię. Za to:

  1. Naciśnij „ Windows ” + „ R ”, aby otworzyć wiersz Uruchom.
  2. Wpisz „regedit” i naciśnij „ Enter ”.

    Wpisując „Regedit” i naciskając „Enter”
  3. Przejdź do następującego adresu
     HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ v4.0.3031 

    Przejdź do tego adresu, jeśli w prawym okienku nie ma wartości „ SchUseStrongCrypto ”.

     HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ .NETFramework \ v4.0.30319 
  4. W prawym okienku kliknij dwukrotnie opcję „ SchUseStrongCrypto ” i wpisz „ 1 ” jako dane wartości.

    Dwukrotne kliknięcie wartości „SchUseStrongCrypto” w prawym okienku
  5. Kliknij „ OK ”, aby zapisać zmiany i sprawdź, czy problem nadal występuje.

Rozwiązanie 2: Wymuszanie użycia TLS 1.2

Jeśli aplikacja została skonfigurowana do używania TLS 1.1 lub TLS 1.0 zamiast TLS 1.2, może to powodować ten błąd. Dlatego na tym etapie będziemy konfigurować nasz komputer do korzystania z TLS 1.2. Za to:

  1. Przejdź do katalogu głównego witryny i kliknij prawym przyciskiem myszy plik „global.asax” .
  2. Wybierz „ Wyświetl kod ” z listy.
  3. Powinna istnieć metoda „ Application_Start ”, dodaj do tej metody następujący wiersz kodu
     if (ServicePointManager. SecurityProtocol. HasFlag (SecurityProtocolType. Tls12) == false) ServicePointManager. SecurityProtocol = ServicePointManager. SecurityProtocol 

    Dodanie wierszy do kodu
  4. Zapisz zmiany i sprawdź, czy problem nadal występuje.

Rozwiązanie 3: Zmiana implementacji gniazda

Jeśli w pewnej implementacji gniazda występuje błąd lub usterka, może to uniemożliwić prawidłowe działanie niektórych elementów aplikacji, przez co może zostać wyzwolony ten błąd. Dlatego na tym etapie będziemy go konfigurować tak, aby używał innej implementacji. Za to:

  1. Upewnij się, że masz klasęStateObjec t” z „ public byte [] buffer = new byte [1024], public Socket socket; „.
  2. Wywołaj funkcję „ Receive (Socket s) ” i wywołaj następujący kod w „ void ReceiveCallback (IAsyncResult ar)
      SocketError errorCode ; int nBytesRec = socket . EndReceive ( ar, out errorCode ); if ( errorCode != SocketError . Success ) { nBytesRec = 0 ; } 
  3. Sprawdź, czy problem nadal występuje po zaimplementowaniu tego kodu.

Rozwiązanie 4: Dodanie linii poleceń (tylko dla Entity Framework)

Jeśli używasz Entity Framework, możliwe, że brakuje określonego wiersza kodu. Dlatego w tym kroku dodamy ten wiersz kodu, aby rozwiązać ten problem. Za to:

  1. Otwórz plik „ .edmx ” i otwórz plik „ .context.tt ” pod nim.
  2. Otwórz plik „ .context.cs ” i dodaj następujący wiersz kodu do swojego konstruktora
      public DBEntities () : base ( "name=DBEntities" ) { this . Configuration . ProxyCreationEnabled = false ; // ADD THIS LINE ! } 
  3. Sprawdź, czy problem nadal występuje po dodaniu tego wiersza kodu.

Rozwiązanie 5: Aktualizacja .NET Framework

Wymagana jest najnowsza wersja frameworku „.NET”, aby wszystko działało sprawnie. Dlatego na tym etapie będziemy pobierać najnowszą wersję ze strony i instalować ją. Za to:

  1. Przejdź do tego łącza, aby pobrać instalację.
  2. Uruchom plik „ .exe ”, aby rozpocząć proces instalacji.

    Uruchamianie pliku wykonywalnego pobranego z Microsoft
  3. Postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby zainstalować aplikację na komputerze.
  4. Sprawdź, czy problem nadal występuje po zakończeniu instalacji.

Ciekawe Artykuły