Cum se remediază o conexiune existentă a fost închisă cu forța de către gazda de la distanță & rsquo; Eroare?

Un computer la distanță este cel care nu are prezență fizică; poate fi accesat numai printr-un fel de rețea de calculatoare. Remote Host este computerul care găzduiește rețeaua care găzduiește computerul la distanță, iar clientul la distanță este utilizatorul clientului la distanță din rețea. Această caracteristică a revoluționat o mulțime de procese și are o extindere excelentă și în viitor.

Cu toate acestea, destul de recent, au apărut o mulțime de rapoarte despre o eroare „ o conexiune existentă a fost închisă forțat de gazda la distanță ” în timp ce încerca să se conecteze la gazda la distanță. Această eroare este declanșată cu o conexiune socket între un client și un server. În acest articol, vă vom oferi câteva soluții viabile pentru a remedia complet această eroare și, de asemenea, vă vom informa despre motivele care declanșează această eroare.

Ce cauzează eroarea „O conexiune existentă a fost închisă forțat de gazda la distanță” în Windows?

După ce am primit numeroase rapoarte de la mai mulți utilizatori, am decis să investigăm problema și am conceput un set de soluții pentru remedierea acesteia. De asemenea, am analizat motivele din cauza cărora este declanșat și le-am enumerat mai jos.

  • Utilizare TLS 1.1 / 1.0: Dacă aplicația rulează pe TLS 1.1 sau TLS 1.0, ar putea declanșa această eroare din cauza deprecierii acestora. TLS 1.2 este calea de urmat atunci când selectați protocolul pe care îl folosește aplicația.
  • Criptografie dezactivată: dacă criptografia a fost dezactivată pentru aparatul dvs., aceasta va împiedica utilizarea TLS 1.2 și va reveni la TLS 1.0, care ar putea declanșa eroarea.
  • Implementare socket: În unele cazuri, un anumit tip de implementare socket declanșează eroarea. Există o eroare cu unele implementări ale aplicației „.NET” și ar putea provoca această eroare.
  • Cod lipsă: pentru unele persoane care foloseau Entity Framework, s-a observat că lipsea o anumită linie de cod din cauza căreia a fost declanșată eroarea.
  • Cadru „.NET” învechit: în anumite cazuri, dacă cadrul „.NET” a fost dezactivat, această eroare ar putea fi declanșată. Anumite sarcini necesită actualizarea cadrului „.NET” la cea mai recentă versiune pentru ca acestea să funcționeze corect.

Acum, că aveți o înțelegere de bază a naturii problemei, vom trece la soluții. Asigurați-vă că le implementați în ordinea specifică în care sunt prezentate pentru a evita conflictele.

Soluția 1: Activarea criptografiei

Dacă criptografia a fost dezactivată pentru aparatul dvs., utilizarea TLS 1.2 este interzisă. Prin urmare, în acest pas, vom activa Criptografia. Pentru asta:

  1. Apăsați „ Windows ” + „ R ” pentru a deschide solicitarea Run.
  2. Tastați „regedit” și apăsați „ Enter ”.
  3. Navigați la următoarea adresă
    HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ v4.0.3031

    Navigați la această adresă dacă nu există o valoare „ SchUseStrongCrypto ” în panoul din dreapta.

    HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ .NETFramework \ v4.0.30319
  4. În panoul din dreapta, faceți dublu clic pe opțiunea „ SchUseStrongCrypto ” și introduceți „ 1 ” ca date de valoare.
  5. Faceți clic pe „ OK ” pentru a salva modificările și verificați dacă problema persistă.

Soluția 2: Forțarea utilizării TLS 1.2

Dacă aplicația a fost configurată pentru a utiliza TLS 1.1 sau TLS 1.0 în loc de TLS 1.2, ar putea declanșa această eroare. Prin urmare, în acest pas, ne vom configura computerul pentru a utiliza TLS 1.2. Pentru asta:

  1. Navigați la rădăcina site-ului și faceți clic dreapta pe fișierul „global.asax” .
  2. Selectați „ View Code ” din listă.
  3. Ar trebui să existe o metodă „ Application_Start ”, adăugați următoarea linie de cod la acea metodă
    if (ServicePointManager. SecurityProtocol. HasFlag (SecurityProtocolType. Tls12) == false) SecurityProtocolType. Tls12;              
  4. Salvați modificările și verificați dacă problema persistă.

Soluția 3: Schimbarea implementării soclului

Dacă o anumită implementare de socket conține o eroare sau o eroare, ar putea împiedica anumite elemente ale aplicației să funcționeze corect din cauza cărora s-ar putea declanșa această eroare. Prin urmare, în acest pas, îl vom configura pentru a utiliza o implementare diferită. Pentru asta:

  1. Asigurați-vă că aveți o clasăStateObjec t” cu „ public byte [] buffer = new byte [1024], socket public socket; „.
  2. Apelați funcția „ Receive (Socket s) ” și apelați următorul cod în „ void ReceiveCallback (IAsyncResult ar)
     SocketError errorCode ; int nBytesRec = socket . EndReceive ( ar , out errorCode ); if ( errorCode != SocketError . Success ) { nBytesRec = 0 ; } 
  3. Verificați dacă problema persistă după implementarea acestui cod.

Soluția 4: Adăugarea de linii de comandă (numai pentru Entity Framework)

Dacă utilizați Entity Framework, este posibil să lipsească o anumită linie de cod. Prin urmare, în acest pas, vom adăuga acea linie de cod pentru a remedia această problemă. Pentru asta:

  1. Deschideți fișierul „ .edmx ” și deschideți fișierul „ .context.tt ” de sub acesta.
  2. Deschideți fișierul „ .context.cs ” și adăugați următoarea linie de cod la constructorul dvs.
     public DBEntities () : base ( "name=DBEntities" ) { this . Configuration . ProxyCreationEnabled = false ; // ADD THIS LINE ! } 
  3. Verificați dacă problema persistă după adăugarea acestei linii de cod.

Soluția 5: Actualizarea .NET Framework

Cea mai recentă versiune a cadrului „.NET” este necesară pentru ca totul să funcționeze fără probleme. Prin urmare, în acest pas, vom descărca cea mai recentă versiune de pe site și o vom instala. Pentru asta:

  1. Navigați la acest link pentru a descărca configurarea.
  2. Executați fișierul „ .exe ” pentru a începe procesul de instalare.
  3. Urmați instrucțiunile de pe ecran pentru a instala aplicația pe computer.
  4. Verificați dacă problema persistă după finalizarea instalării.