Wie behebe ich den Fehler, dass eine bestehende Verbindung vom Remote-Host gewaltsam geschlossen wurde?

Ein entfernter Computer ist derjenige, der keine physische Präsenz hat. Es kann nur über eine Art Computernetzwerk zugegriffen werden. Der Remote-Host ist der Computer, auf dem sich das Netzwerk befindet, auf dem sich der Remote-Computer befindet, und der Remote-Client ist der Benutzer des Remote-Clients im Netzwerk. Diese Funktion hat viele Prozesse revolutioniert und hat auch in Zukunft einen großen Umfang.

Eine vorhandene Verbindung wurde durch den lokalen Hostfehler zwangsweise geschlossen

In letzter Zeit sind jedoch zahlreiche Meldungen eingegangen, wonach beim Versuch, eine Verbindung zum Remotehost herzustellen, die Fehlermeldung " Eine vorhandene Verbindung wurde vom Remotehost zwangsweise geschlossen " ausgegeben wurde. Dieser Fehler wird bei einer Socket-Verbindung zwischen einem Client und einem Server ausgelöst. In diesem Artikel werden wir einige praktikable Lösungen anbieten, um diesen Fehler vollständig zu beheben, und Sie über die Gründe informieren, die diesen Fehler auslösen.

Welche Ursachen hat der Fehler "Eine bestehende Verbindung wurde vom Remotehost gewaltsam geschlossen" in Windows?

Nachdem wir zahlreiche Berichte von mehreren Benutzern erhalten hatten, beschlossen wir, das Problem zu untersuchen und eine Reihe von Lösungen zu entwickeln, um es zu beheben. Außerdem haben wir die Gründe, aufgrund derer es ausgelöst wird, untersucht und nachfolgend aufgelistet.

  • TLS 1.1 / 1.0-Verwendung: Wenn die Anwendung unter TLS 1.1 oder TLS 1.0 ausgeführt wird, kann dieser Fehler möglicherweise ausgelöst werden, da sie nicht mehr unterstützt werden. TLS 1.2 ist der richtige Weg, um das von der Anwendung verwendete Protokoll auszuwählen.
  • Kryptografie deaktiviert : Wenn die Kryptografie für Ihren Computer deaktiviert wurde, wird die Verwendung von TLS 1.2 verhindert und auf TLS 1.0 zurückgegriffen, wodurch der Fehler möglicherweise ausgelöst wird.
  • Socket-Implementierung: In einigen Fällen löst eine bestimmte Art der Socket-Implementierung den Fehler aus. Bei einigen Implementierungen der .NET-Anwendung ist ein Fehler aufgetreten, der diesen Fehler verursachen kann.
  • Fehlender Code: Bei einigen Personen, die das Entity Framework verwendeten, wurde festgestellt, dass eine bestimmte Codezeile fehlte, aufgrund derer der Fehler ausgelöst wurde.
  • Veraltetes ".NET" -Framework: In bestimmten Fällen kann dieser Fehler ausgelöst werden, wenn das ".NET" -Framework deaktiviert wurde. Für bestimmte Aufgaben muss das .NET-Framework auf die neueste Version aktualisiert werden, damit sie ordnungsgemäß funktionieren.

Nachdem Sie ein grundlegendes Verständnis für die Art des Problems haben, werden wir uns den Lösungen zuwenden. Stellen Sie sicher, dass Sie diese in der angegebenen Reihenfolge implementieren, um Konflikte zu vermeiden.

Lösung 1: Aktivieren der Kryptografie

Wenn die Kryptografie für Ihren Computer deaktiviert wurde, ist die Verwendung von TLS 1.2 verboten. Daher werden wir in diesem Schritt die Kryptografie aktivieren. Dafür:

  1. Drücken Sie " Windows " + " R ", um die Eingabeaufforderung "Ausführen" zu öffnen.
  2. Tippen Sie "regedit" ein und drücken Sie " Enter ".

    Tippe "Regedit" ein und drücke "Enter"
  3. Navigieren Sie zu der folgenden Adresse
     HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ v4.0.3031 

    Navigieren Sie zu dieser Adresse, wenn sich im rechten Bereich kein Wert für " SchUseStrongCrypto " befindet.

     HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ .NETFramework \ v4.0.30319 
  4. Doppelklicken Sie im rechten Fensterbereich auf die Option " SchUseStrongCrypto " und geben Sie als Wert " 1 " ein.

    Doppelklicken Sie im rechten Fensterbereich auf den Wert "SchUseStrongCrypto"
  5. Klicken Sie auf " OK ", um Ihre Änderungen zu speichern und zu überprüfen, ob das Problem weiterhin besteht.

Lösung 2: Erzwingen der Verwendung von TLS 1.2

Wenn die Anwendung für die Verwendung von TLS 1.1 oder TLS 1.0 anstelle von TLS 1.2 konfiguriert wurde, wird dieser Fehler möglicherweise ausgelöst. Daher konfigurieren wir in diesem Schritt unseren Computer für die Verwendung von TLS 1.2. Dafür:

  1. Navigieren Sie zum Stammverzeichnis der Site und klicken Sie mit der rechten Maustaste auf die Datei "global.asax" .
  2. Wählen Sie " Code anzeigen " aus der Liste.
  3. Es sollte eine " Application_Start " -Methode geben. Fügen Sie dieser Methode die folgende Codezeile hinzu
     if (ServicePointManager. SecurityProtocol. HasFlag (SecurityProtocolType. Tls12) == false) ServicePointManager. SecurityProtocol = ServicePointManager. Sicherheitsprotokoll 

    Hinzufügen der Zeilen zum Code
  4. Speichern Sie Ihre Änderungen und überprüfen Sie, ob das Problem weiterhin besteht.

Lösung 3: Ändern der Socket-Implementierung

Wenn eine bestimmte Socket-Implementierung einen Fehler oder eine Panne aufweist, kann dies dazu führen, dass bestimmte Elemente der Anwendung nicht ordnungsgemäß funktionieren, wodurch dieser Fehler möglicherweise ausgelöst wird. Aus diesem Grund konfigurieren wir es in diesem Schritt so, dass es eine andere Implementierung verwendet. Dafür:

  1. Stellen Sie sicher, dass Sie eine Klasse " StateObjec t" mit " public byte [] buffer = new byte [1024], public Socket socket; “.
  2. Rufen Sie die Funktion " Receive (Socket s) " auf und rufen Sie den folgenden Code in " void ReceiveCallback (IAsyncResult ar) " auf
      SocketError errorCode ; int nBytesRec = socket . EndReceive ( ar, out errorCode ); if ( errorCode != SocketError . Success ) { nBytesRec = 0 ; } 
  3. Überprüfen Sie, ob das Problem nach der Implementierung dieses Codes weiterhin besteht.

Lösung 4: Hinzufügen von Befehlszeilen (nur für Entity Framework)

Wenn Sie das Entity Framework verwenden, fehlt möglicherweise eine bestimmte Codezeile. Daher werden wir in diesem Schritt diese Codezeile hinzufügen, um dieses Problem zu beheben. Dafür:

  1. Öffnen Sie Ihre " .edmx " -Datei und öffnen Sie die " .context.tt " -Datei darunter.
  2. Öffnen Sie die Datei " .context.cs " und fügen Sie Ihrem Konstruktor die folgende Codezeile hinzu
      public DBEntities () : base ( "name=DBEntities" ) { this . Configuration . ProxyCreationEnabled = false ; // ADD THIS LINE ! } 
  3. Überprüfen Sie, ob das Problem nach dem Hinzufügen dieser Codezeile weiterhin besteht.

Lösung 5: Aktualisieren von .NET Framework

Damit alles reibungslos funktioniert, ist die neueste Version des .NET-Frameworks erforderlich. Daher werden wir in diesem Schritt die neueste Version von der Site herunterladen und installieren. Dafür:

  1. Navigieren Sie zu diesem Link, um das Setup herunterzuladen.
  2. Führen Sie die EXE- Datei aus, um den Installationsvorgang zu starten.

    Ausführen der von Microsoft heruntergeladenen ausführbaren Datei
  3. Befolgen Sie die Anweisungen auf dem Bildschirm, um die Anwendung auf Ihrem Computer zu installieren.
  4. Überprüfen Sie, ob das Problem nach Abschluss der Installation weiterhin besteht.

Interessante Artikel