¿Cómo reparar el error 'Una conexión existente se cerró por la fuerza por el host remoto' Error?

Una computadora remota es la que no tiene presencia física; solo se puede acceder a través de algún tipo de red informática. El host remoto es la computadora que aloja la red que aloja la computadora remota y el cliente remoto es el usuario del cliente remoto en la red. Esta característica ha revolucionado muchos procesos y también tiene un gran alcance en el futuro.

Una conexión existente se cerró por la fuerza por el error del host local

Sin embargo, recientemente, se han recibido muchos informes de un error de " una conexión existente fue cerrada por la fuerza por el host remoto " al intentar conectarse al host remoto. Este error se desencadena con una conexión de socket entre un cliente y un servidor. En este artículo, proporcionaremos algunas soluciones viables para rectificar completamente este error y también le informaremos sobre los motivos que lo desencadenan.

¿Qué causa el error 'Una conexión existente fue cerrada por la fuerza por el host remoto' en Windows?

Después de recibir numerosos informes de múltiples usuarios, decidimos investigar el problema e ideamos un conjunto de soluciones para solucionarlo. Además, analizamos los motivos por los cuales se activa y los enumeramos a continuación.

  • Uso de TLS 1.1 / 1.0: si la aplicación se ejecuta en TLS 1.1 o TLS 1.0, podría desencadenar este error debido a que se deprecian. TLS 1.2 es el camino a seguir al seleccionar el protocolo que utiliza la aplicación.
  • Criptografía deshabilitada: si la criptografía ha sido deshabilitada para su máquina, evitará el uso de TLS 1.2 y volverá a caer en TLS 1.0, lo que podría desencadenar el error.
  • Implementación de socket: en algunos casos, un tipo particular de implementación de socket desencadena el error. Hay un error con algunas implementaciones de la aplicación ".NET" y puede causar este error.
  • Código faltante: para algunas personas que usaban Entity Framework, se observó que faltaba una determinada línea de código debido a que se estaba activando el error.
  • Marco ".NET" desactualizado: en ciertos casos, si el marco ".NET" se ha deshabilitado, este error podría activarse. Ciertas tareas requieren que el marco ".NET" se actualice a la última versión para que funcionen correctamente.

Ahora que tiene una comprensión básica de la naturaleza del problema, avanzaremos hacia las soluciones. Asegúrese de implementarlos en el orden específico en que se presentan para evitar conflictos.

Solución 1: habilitar la criptografía

Si la criptografía ha sido deshabilitada para su máquina, el uso de TLS 1.2 está prohibido. Por lo tanto, en este paso, habilitaremos la Criptografía. Para eso:

  1. Presione " Windows " + " R " para abrir el mensaje Ejecutar.
  2. Escriba "regedit" y presione " Enter ".

    Escribiendo "Regedit" y presionando "Enter"
  3. Navega a la siguiente dirección
     HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ v4.0.3031 

    Navegue a esta dirección si no hay un valor " SchUseStrongCrypto " en el panel derecho.

     HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ .NETFramework \ v4.0.30319 
  4. En el panel derecho, haga doble clic en la opción " SchUseStrongCrypto " e ingrese " 1 " como Información del valor.

    Haga doble clic en el valor "SchUseStrongCrypto" en el panel derecho
  5. Haga clic en " Aceptar " para guardar los cambios y verifique si el problema persiste.

Solución 2: Forzar el uso de TLS 1.2

Si la aplicación se configuró para usar TLS 1.1 o TLS 1.0 en lugar de TLS 1.2, podría desencadenar este error. Por lo tanto, en este paso, configuraremos nuestra computadora para usar TLS 1.2. Para eso:

  1. Navegue a la raíz del sitio y haga clic derecho en el archivo "global.asax" .
  2. Seleccione " Ver código " de la lista.
  3. Debe haber un método " Application_Start ", agregue la siguiente línea de código a ese método
     if (ServicePointManager. SecurityProtocol. HasFlag (SecurityProtocolType. Tls12) == false) ServicePointManager. SecurityProtocol = ServicePointManager. Protocolo de seguridad 

    Agregar las líneas al código
  4. Guarde sus cambios y verifique si el problema persiste.

Solución 3: Cambiar la implementación del socket

Si una determinada implementación de socket tiene un error o falla, podría evitar que ciertos elementos de la aplicación funcionen correctamente debido a lo cual se podría desencadenar este error. Por lo tanto, en este paso, lo configuraremos para usar una implementación diferente. Para eso:

  1. Asegúrese de tener una clase " StateObjec t" con " public byte [] buffer = new byte [1024], public Socket socket; ".
  2. Llame a la función " Recibir (Socket s) " y llame al siguiente código en " void ReceiveCallback (IAsyncResult ar) "
      SocketError errorCode ; int nBytesRec = socket . EndReceive ( ar, out errorCode ); if ( errorCode != SocketError . Success ) { nBytesRec = 0 ; } 
  3. Verifique si el problema persiste después de implementar este código.

Solución 4: Agregar líneas de comando (solo para Entity Framework)

Si está utilizando Entity Framework, es posible que falte una determinada línea de código. Por lo tanto, en este paso, agregaremos esa línea de código para solucionar este problema. Para eso:

  1. Abra su archivo " .edmx " y abra el archivo " .context.tt " debajo de él.
  2. Abra el archivo " .context.cs " y agregue la siguiente línea de código a su constructor
      public DBEntities () : base ( "name=DBEntities" ) { this . Configuration . ProxyCreationEnabled = false ; // ADD THIS LINE ! } 
  3. Verifique si el problema persiste después de agregar esta línea de código.

Solución 5: Actualización de .NET Framework

Se requiere la última versión del Framework ".NET" para que todo funcione sin problemas. Por lo tanto, en este paso, descargaremos la última versión del sitio y la instalaremos. Para eso:

  1. Navegue a este enlace para descargar la configuración.
  2. Ejecute el archivo " .exe " para iniciar el proceso de instalación.

    Ejecutando el ejecutable descargado de Microsoft
  3. Siga las instrucciones en pantalla para instalar la aplicación en su computadora.
  4. Verifique si el problema persiste después de completar la instalación.

Artículos De Interés