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



Wypróbuj Nasz Instrument Do Eliminowania Problemów

Komputer zdalny to taki, który nie jest fizycznie obecny; można uzyskać do niego dostęp tylko przez jakąś sieć komputerową. Host zdalny to komputer obsługujący sieć, na którym znajduje się komputer zdalny, a klient zdalny to użytkownik 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 lokalnego hosta



Jednak całkiem niedawno napłynęło wiele raportów na temat „ istniejące połączenie zostało przymusowo zamknięte przez zdalnego hosta ”Błąd podczas próby połączenia się ze zdalnym hostem. Ten błąd jest wyzwalany w przypadku połączenia gniazda między klientem a serwerem. W tym artykule przedstawimy kilka wykonalnych rozwiązań, które całkowicie naprawią ten błąd, a także poinformujemy Cię o powodach, które powodują ten błąd.



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

Po otrzymaniu wielu zgłoszeń od wielu użytkowników zdecydowaliśmy się zbadać problem i opracować zestaw rozwiązań, które go naprawią. Przyjrzeliśmy się również powodom, dla których jest uruchamiany, i wymieniliśmy je poniżej.

  • Wykorzystanie TLS 1.1 / 1.0: Jeśli aplikacja działa w protokole TLS 1.1 lub TLS 1.0, może wywołać ten błąd z powodu ich amortyzacji. TLS 1.2 to droga do wyboru protokołu, z którego korzysta aplikacja.
  • Kryptografia wyłączona: Jeśli kryptografia została wyłączona dla twojego komputera, uniemożliwi to korzystanie z TLS 1.2 i powróci do TLS 1.0, co może wywołać błąd.
  • Implementacja gniazda: W niektórych przypadkach określony typ implementacji gniazda wyzwala błąd. W niektórych implementacjach aplikacji „.NET” występuje błąd, który może powodować ten błąd.
  • Brak kodu: W przypadku niektórych osób, które korzystały z Entity Framework, zaobserwowano, że brakowało określonego wiersza kodu, z powodu którego został wyzwolony błąd.
  • Przestarzała platforma „.NET”: W niektórych przypadkach, jeśli środowisko „.NET” zostało wyłączone, może wystąpić ten błąd. Niektóre zadania wymagają aktualizacji frameworka „.NET” do najnowszej wersji, aby działały prawidłowo.

Teraz, gdy masz już podstawową wiedzę na temat natury problemu, przejdziemy do rozwiązań. Upewnij się, że wdrażasz je w określonej kolejności, w której są przedstawione, aby uniknąć konfliktów.

Rozwiązanie 1: Włączanie kryptografii

Jeśli kryptografia została wyłączona dla twojego komputera, użycie TLS 1.2 jest zabronione. Dlatego na tym etapie włączymy kryptografię. Za to:



  1. Naciśnij ' Windows „+” R ”, Aby otworzyć monit Uruchom.
  2. Wpisz „Regedit” i naciśnij „ Wchodzić ”.

    Wpisując „Regedit” i naciskając „Enter”

  3. Przejdź pod następujący adres
    HKEY_LOCAL_MACHINE  SOFTWARE  Microsoft  .NETFramework  v4.0.3031

    Przejdź pod ten adres, jeśli nie ma „ SchUseStrongCrypto ”Wartość w prawym okienku.

    HKEY_LOCAL_MACHINE  SOFTWARE  Wow6432Node  Microsoft  .NETFramework  v4.0.30319
  4. W prawym okienku kliknij dwukrotnie ikonę „ SchUseStrongCrypto ”I wpisz„ 1 ”Jako dane wartości.

    Dwukrotne kliknięcie wartości „SchUseStrongCrypto” w prawym okienku

  5. Kliknij ' dobrze ”, Aby zapisać zmiany i czek aby sprawdzić, czy problem nadal występuje.

Rozwiązanie 2: Wymuszanie użycia TLS 1.2

Jeśli aplikacja została skonfigurowana do używania protokołu TLS 1.1 lub TLS 1.0 zamiast TLS 1.2, może to spowodować ten błąd. Dlatego w tym kroku 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” plik.
  2. Wybierz ' Widok Kod ' z listy.
  3. Powinien istnieć „ Application_Start ”, Dodaj następujący wiersz kodu do tej metody
    gdyby (ServicePointManager.SecurityProtocol.HasFlag(SecurityProtocolType.Tls12) == fałszywy) SecurityProtocolType.Tls12;

    Dodawanie linii do kodu

  4. Zapisać Twoje zmiany i czek aby sprawdzić, czy problem nadal występuje.

Rozwiązanie 3: Zmiana implementacji gniazda

Jeśli dana implementacja gniazda ma błąd lub usterkę, może to uniemożliwić prawidłowe działanie niektórych elementów aplikacji, przez co może zostać wywołany ten błąd. Dlatego w tym kroku skonfigurujemy go tak, aby używał innej implementacji. Za to:

  1. Upewnij się, że masz „ StateObjec t ”klasa z„ publiczny bajt [] bufor = nowy bajt [1024], publiczne gniazdo Socket; ”.
  2. Zadzwoń do ' Odbierz (gniazda) ”I wywołaj następujący kod w„ void ReceiveCallback (IAsyncResult ar) '
     SocketErrorKod błędu; intnBytesRec=gniazdo elektryczne.EndReceive(Z, na zewnątrzKod błędu); gdyby (Kod błędu! = SocketError.Powodzenie) {nBytesRec= 0; }
  3. Sprawdź, czy problem nadal występuje po zaimplementowaniu tego kodu.

Rozwiązanie 4: Dodawanie wierszy poleceń (tylko dla Entity Framework)

Jeśli korzystasz z Entity Framework, możliwe, że brakuje określonego wiersza kodu. Dlatego w tym kroku dodamy tę linię kodu, aby rozwiązać ten problem. Za to:

  1. Otwórz swoje ' .edmx ”I otwórz„ .context.tt ”Poniżej.
  2. Otworzyć ' .context.cs ”I dodaj następujący wiersz kodu do konstruktora
    publiczny DBEntities() : baza('name = DBEntities') { to.Konfiguracja.ProxyCreationEnabled = fałszywy; // DODAJ TĘ LINIĘ! }
  3. Sprawdź, czy problem nadal występuje po dodaniu tego wiersza kodu.

Rozwiązanie 5: Aktualizacja .NET Framework

Aby wszystko działało sprawnie, wymagana jest najnowsza wersja „.NET” Framework. Dlatego w tym kroku pobierzemy najnowszą wersję ze strony i zainstalujemy ją. Za to:

  1. Nawigować do to łącze do pobrania konfiguracji.
  2. Wykonaj „ .exe ”, Aby rozpocząć proces instalacji.

    Uruchomienie pliku wykonywalnego pobranego z firmy Microsoft

  3. Podążać instrukcje ekranowe dotyczące instalacji aplikacji na komputerze.
  4. Czek aby sprawdzić, czy problem nadal występuje po zakończeniu instalacji.
3 minuty czytania