Comment réparer l'erreur "Une connexion existante a été fermée de force par l'hôte distant"?

Un ordinateur distant est celui qui n'a pas de présence physique; on ne peut y accéder que par une sorte de réseau informatique. L'hôte distant est l'ordinateur hébergeant le réseau qui héberge l'ordinateur distant et le client distant est l'utilisateur du client distant sur le réseau. Cette fonctionnalité a révolutionné de nombreux processus et a également une grande portée dans le futur.

Une connexion existante a été fermée de force par l'erreur d'hôte local

Cependant, très récemment, de nombreux rapports signalant l'erreur « une connexion existante a été forcée de manière fermée par l'hôte distant » lors de la tentative de connexion à l'hôte distant. Cette erreur est déclenchée par une connexion de socket entre un client et un serveur. Dans cet article, nous fournirons des solutions viables pour rectifier complètement cette erreur et vous informerons également des raisons qui la déclenchent.

Quelles sont les causes de l'erreur 'Une connexion existante a été fermée de force par l'hôte distant' dans Windows?

Après avoir reçu de nombreux rapports de plusieurs utilisateurs, nous avons décidé d’enquêter sur le problème et de mettre au point un ensemble de solutions pour le résoudre. Nous avons également examiné les raisons pour lesquelles il est déclenché et les avons énumérées ci-dessous.

  • Utilisation de TLS 1.1 / 1.0: Si l’application s’exécute sur TLS 1.1 ou TLS 1.0, cette erreur peut être déclenchée en raison de son amortissement. TLS 1.2 est la voie à suivre pour sélectionner le protocole utilisé par l'application.
  • Cryptographie désactivée: si la cryptographie a été désactivée pour votre ordinateur, cela empêchera l'utilisation de TLS 1.2 et aura recours à TLS 1.0, ce qui pourrait déclencher l'erreur.
  • Implémentation de socket: dans certains cas, un type particulier d'implémentation de socket déclenche l'erreur. Il y a un bogue avec certaines implémentations de l'application “.NET” et cela pourrait causer cette erreur.
  • Code manquant: pour certaines personnes utilisant Entity Framework, il a été constaté qu’une certaine ligne de code était manquante en raison du déclenchement de l’erreur.
  • Framework «.NET» obsolète: dans certains cas, si le framework «.NET» a été désactivé, cette erreur peut être déclenchée. Certaines tâches nécessitent la mise à jour de la structure «.NET» vers la dernière version pour fonctionner correctement.

Maintenant que vous avez une compréhension de base de la nature du problème, nous allons avancer vers les solutions. Assurez-vous de les mettre en œuvre dans l'ordre spécifique dans lequel elles sont présentées pour éviter les conflits.

Solution 1: activation de la cryptographie

Si la cryptographie a été désactivée pour votre machine, l'utilisation de TLS 1.2 est interdite. Par conséquent, dans cette étape, nous activerons la cryptographie. Pour ça:

  1. Appuyez sur " Windows " + " R " pour ouvrir l'invite d'exécution.
  2. Tapez "regedit" et appuyez sur " Entrée ".

    Taper "Regedit" et appuyer sur "Entrée"
  3. Accédez à l'adresse suivante
     HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ v4.0.3031 

    Accédez à cette adresse s'il n'y a pas de valeur « SchUseStrongCrypto » dans le volet de droite.

     HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ .NETFramework \ v4.0.30319 
  4. Dans le volet de droite, double-cliquez sur l'option “ SchUseStrongCrypto ” et entrez “ 1 ” comme données de valeur.

    Double-cliquez sur la valeur «SchUseStrongCrypto» dans le volet de droite.
  5. Cliquez sur « OK » pour enregistrer vos modifications et vérifiez si le problème persiste.

Solution 2: Forcer l'utilisation de TLS 1.2

Si l'application a été configurée pour utiliser TLS 1.1 ou TLS 1.0 au lieu de TLS 1.2, cette erreur peut être déclenchée. Par conséquent, dans cette étape, nous allons configurer notre ordinateur pour utiliser TLS 1.2. Pour ça:

  1. Accédez à la racine du site et cliquez avec le bouton droit sur le fichier “global.asax” .
  2. Sélectionnez « Afficher le code » dans la liste.
  3. Il devrait y avoir une méthode “ Application_Start ”, ajoutez la ligne de code suivante à cette méthode
     if (ServicePointManager. SecurityProtocol. HasFlag (SecurityProtocolType. Tls12) == false) ServicePointManager. SecurityProtocol = ServicePointManager. SecurityProtocol 

    Ajouter les lignes au code
  4. Enregistrez vos modifications et vérifiez si le problème persiste.

Solution 3: modification de l'implémentation de socket

Si une implémentation de socket présente un bogue ou un problème, elle peut empêcher certains éléments de l’application de fonctionner correctement, ce qui pourrait provoquer le déclenchement de cette erreur. Par conséquent, dans cette étape, nous allons le configurer pour utiliser une implémentation différente. Pour ça:

  1. Assurez-vous que vous avez une classe « StateObjec t» avec « octet public [] tampon = nouvel octet [1024], prise de socket publique; “.
  2. Appelez la fonction « Receive (Socket s) » et appelez le code suivant dans « void ReceiveCallback (IAsyncResult ar) ».
      SocketError errorCode ; int nBytesRec = socket . EndReceive ( ar, out errorCode ); if ( errorCode != SocketError . Success ) { nBytesRec = 0 ; } 
  3. Vérifiez si le problème persiste après l'implémentation de ce code.

Solution 4: Ajout de lignes de commande (uniquement pour Entity Framework)

Si vous utilisez Entity Framework, il est possible qu'une certaine ligne de code soit manquante. Par conséquent, dans cette étape, nous allons ajouter cette ligne de code afin de résoudre ce problème. Pour ça:

  1. Ouvrez votre fichier “ .edmx ” et ouvrez le fichier “ .context.tt ” situé en dessous.
  2. Ouvrez le fichier “ .context.cs ” et ajoutez la ligne de code suivante à votre constructeur
      public DBEntities () : base ( "name=DBEntities" ) { this . Configuration . ProxyCreationEnabled = false ; // ADD THIS LINE ! } 
  3. Vérifiez si le problème persiste après l'ajout de cette ligne de code.

Solution 5: Mise à jour de .NET Framework

La dernière version du “.NET” Framework est nécessaire pour que tout fonctionne correctement. Par conséquent, à cette étape, nous allons télécharger la dernière version du site et l’installer. Pour ça:

  1. Accédez à ce lien pour télécharger la configuration.
  2. Exécutez le fichier.exe ” pour lancer le processus d’installation.

    Exécuter le fichier exécutable téléchargé de Microsoft
  3. Suivez les instructions à l'écran pour installer l'application sur votre ordinateur.
  4. Vérifiez si le problème persiste une fois l'installation terminée.

Des Articles Intéressants