Como corrigir o erro 'Uma conexão existente foi forçada a fechar pelo host remoto'?

Um computador remoto é aquele que não tem presença física; só pode ser acessado através de algum tipo de rede de computadores. O Host Remoto é o computador que hospeda a rede que hospeda o computador remoto e o cliente remoto é o usuário do cliente remoto na rede. Esse recurso revolucionou muitos processos e também tem um grande escopo no futuro.

Uma conexão existente foi forçosamente fechada pelo erro do host local

No entanto, muito recentemente, muitos relatórios foram recebidos de um erro “ uma conexão existente foi forçosamente fechada pelo host remoto ” ao tentar se conectar ao host remoto. Este erro é acionado com uma conexão de soquete entre um cliente e um servidor. Neste artigo, forneceremos algumas soluções viáveis ​​para corrigir completamente esse erro e também informaremos sobre os motivos que acionaram esse erro.

O que causa o erro 'Uma conexão existente foi forçosamente fechada pelo host remoto' no Windows?

Depois de receber vários relatórios de vários usuários, decidimos investigar o problema e criamos um conjunto de soluções para solucioná-lo. Além disso, analisamos os motivos pelos quais ele é acionado e os listamos abaixo.

  • TLS 1.1 / 1.0 Uso: Se o aplicativo estiver em execução no TLS 1.1 ou TLS 1.0, ele poderá acionar esse erro, pois eles serão depreciados. O TLS 1.2 é o caminho a percorrer ao selecionar o protocolo que o aplicativo usa.
  • Criptografia desativada: se a criptografia foi desativada para sua máquina, ela impedirá o uso do TLS 1.2 e voltará ao TLS 1.0, o que pode acionar o erro.
  • Implementação de soquete: em alguns casos, um determinado tipo de implementação de soquete dispara o erro. Há um bug com algumas implementações pelo aplicativo ".NET" e isso pode causar esse erro.
  • Código Ausente: Para algumas pessoas que estavam usando o Entity Framework, observou-se que uma certa linha de código estava faltando devido a que o erro estava sendo acionado.
  • Estrutura “.NET” desatualizada: em certos casos, se o “.NET” Framework foi desabilitado, esse erro pode ser acionado. Certas tarefas exigem que a estrutura “.NET” seja atualizada para a versão mais recente para que funcionem corretamente.

Agora que você tem uma compreensão básica da natureza do problema, nós nos moveremos em direção às soluções. Certifique-se de implementá-los na ordem específica em que são apresentados para evitar conflitos.

Solução 1: Ativando a Criptografia

Se a criptografia foi desativada para sua máquina, o uso do TLS 1.2 é proibido. Portanto, nesta etapa, estaremos habilitando a criptografia. Por isso:

  1. Pressione “ Windows ” + “ R ” para abrir o prompt Executar.
  2. Digite "regedit" e pressione " Enter ".

    Digitando em “Regedit” e pressionando “Enter”
  3. Navegue até o seguinte endereço
     HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ v4.0.3031 

    Navegue para este endereço se não houver um valor “ SchUseStrongCrypto ” no painel direito.

     HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ .NETFramework \ v4.0.30319 
  4. No painel direito, clique duas vezes na opção “ SchUseStrongCrypto ” e digite “ 1 ” como dados do valor.

    Clique duas vezes no valor “SchUseStrongCrypto” no painel direito
  5. Clique em " OK " para salvar suas alterações e verificar se o problema persiste.

Solução 2: forçando o uso de TLS 1.2

Se o aplicativo tiver sido configurado para usar o TLS 1.1 ou o TLS 1.0 em vez do TLS 1.2, isso poderá acionar esse erro. Portanto, nesta etapa, estaremos configurando nosso computador para usar o TLS 1.2. Por isso:

  1. Navegue até a raiz do site e clique com o botão direito do mouse no arquivo “global.asax” .
  2. Selecione " View Code " na lista.
  3. Deve haver um método " Application_Start ", adicione a seguinte linha de código a esse método
     if (ServicePointManager. SecurityProtocol. HasFlag (SecurityProtocolType.Tls12) == false) ServicePointManager. SecurityProtocol = ServicePointManager. SecurityProtocol 

    Adicionando as linhas ao código
  4. Salve suas alterações e verifique se o problema persiste.

Solução 3: Alterando a Implementação do Soquete

Se uma determinada implementação de soquete tiver um erro ou falha, isso pode impedir que certos elementos do aplicativo funcionem adequadamente, devido ao qual esse erro pode ser acionado. Portanto, nesta etapa, iremos configurá-lo para usar uma implementação diferente. Por isso:

  1. Certifique-se de ter uma classe “ StateObjec t” com “ public byte [] buffer = new byte [1024], soquete de soquete público; “.
  2. Chame a função “ Receive (Socket s) ” e chame o seguinte código em “ void ReceiveCallback (IAsyncResult ar)
      SocketError errorCode ; int nBytesRec = socket . EndReceive ( ar, out errorCode ); if ( errorCode != SocketError . Success ) { nBytesRec = 0 ; } 
  3. Verifique se o problema persiste após a implementação deste código.

Solução 4: Adicionando linhas de comando (somente para o Entity Framework)

Se você estiver usando o Entity Framework, é possível que uma determinada linha de código esteja ausente. Portanto, nesta etapa, adicionaremos essa linha de código para corrigir esse problema. Por isso:

  1. Abra o arquivo.edmx ” e abra o arquivo “ .context.tt ” abaixo dele.
  2. Abra o arquivo “ .context.cs ” e adicione a seguinte linha de código ao seu construtor
      public DBEntities () : base ( "name=DBEntities" ) { this . Configuration . ProxyCreationEnabled = false ; // ADD THIS LINE ! } 
  3. Verifique se o problema persiste após adicionar esta linha de código.

Solução 5: atualizando o .NET Framework

A versão mais recente do Framework ".NET" é necessária para que tudo funcione sem problemas. Portanto, nesta etapa, faremos o download da versão mais recente do site e a instalação. Por isso:

  1. Navegue até este link para baixar a configuração.
  2. Execute o arquivo " .exe " para iniciar o processo de instalação.

    Executando o arquivo executável baixado da Microsoft
  3. Siga as instruções na tela para instalar o aplicativo no seu computador.
  4. Verifique se o problema persiste após concluir a instalação.

Artigos Interessantes