Cómo arreglar & lsquo; El host remoto cerró a la fuerza una conexión existente & rsquo; ¿Error?

Una computadora remota es aquella que no tiene presencia física; sólo se puede acceder a él 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.

Sin embargo, recientemente, se han recibido muchos informes de un error de " una conexión existente fue cerrada a 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 de las razones que desencadenan este error.

¿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 varios usuarios, decidimos investigar el problema e ideamos un conjunto de soluciones para solucionarlo. Además, analizamos las razones por las que se activa y las 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 depreciaron. TLS 1.2 es el camino a seguir al seleccionar el protocolo que utiliza la aplicación.
  • Criptografía deshabilitada: si se deshabilitó la criptografía para su máquina, evitará el uso de TLS 1.2 y recurrirá a 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 activaba el error.
  • Marco ".NET" desactualizado: en ciertos casos, si el marco ".NET" se ha deshabilitado, este error puede 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 el que se presentan para evitar conflictos.

Solución 1: Habilitación de la criptografía

Si se ha desactivado la criptografía 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 indicador Ejecutar.
  2. Escriba "regedit" y presione " 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 ningún 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.
  5. Haga clic en " Aceptar " para guardar sus cambios y verifique si el problema persiste.

Solución 2: Forzar el uso de TLS 1.2

Si la aplicación se ha configurado para usar TLS 1.1 o TLS 1.0 en lugar de TLS 1.2, puede 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) SecurityProtocolType. Tls12;              
  4. Guarde sus cambios y verifique si el problema persiste.

Solución 3: cambio de implementación de socket

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

  1. Asegúrese de tener una claseStateObjec t” con “ public byte [] buffer = new byte [1024], public Socket socket; “.
  2. Llame a la función " Receive (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.
  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.