Kaip sutvarkyti esamą jungtį per prievartą uždarė nuotolinis pagrindinis kompiuteris & rsquo; Klaida?

Nuotolinis kompiuteris yra tas, kuriame nėra fizinio buvimo; prie jo galima prisijungti tik per tam tikrą kompiuterių tinklą. Nuotolinis pagrindinis kompiuteris yra kompiuteris, kuriame talpinamas tinklas, kuriame yra nuotolinis kompiuteris, o nuotolinis klientas yra nuotolinio kliento tinkle vartotojas. Ši funkcija sukėlė revoliuciją daugelyje procesų ir turi didelę apimtį ir ateityje.

Tačiau visai neseniai buvo pateikta daug pranešimų apie klaidą „ esamas ryšys buvo priverstinai uždarytas nuotolinio kompiuterio “ bandant prisijungti prie nuotolinio kompiuterio. Ši klaida suveikia naudojant kliento ir serverio jungtį. Šiame straipsnyje pateiksime keletą perspektyvių sprendimų, kaip visiškai ištaisyti šią klaidą, taip pat informuosime apie priežastis, dėl kurių atsiranda ši klaida.

Kas sukelia klaidą „Esamą ryšį priverstinai uždarė nuotolinis pagrindinis kompiuteris“ sistemoje „Windows“?

Gavę daugybę pranešimų iš kelių vartotojų, nusprendėme ištirti problemą ir sukūrėme sprendimų rinkinį, kaip ją išspręsti. Be to, mes išnagrinėjome priežastis, dėl kurių jis suveikė, ir išvardinome juos žemiau.

  • TLS 1.1 / 1.0 naudojimas: Jei programa veikia naudojant TLS 1.1 arba TLS 1.0, ji gali sukelti šią klaidą dėl jų nuvertėjimo. TLS 1.2 yra kelias, kuriuo reikia eiti pasirinkus protokolą, kurį programa naudoja.
  • Kriptografija išjungta: jei jūsų mašinoje išjungta kriptografija, tai neleis naudoti TLS 1.2 ir vėl bus naudojama TLS 1.0, o tai gali sukelti klaidą.
  • Lizdo diegimas: kai kuriais atvejais klaidą sukelia tam tikras lizdo diegimo tipas. Yra klaida su kai kuriais „.NET“ programos diegimais ir tai gali sukelti šią klaidą.
  • Trūksta kodo: Kai kuriems žmonėms, kurie naudojo „Entity Framework“, buvo pastebėta, kad trūksta tam tikros kodo eilutės, dėl kurios buvo suaktyvinta klaida.
  • Pasenusi „.NET“ sistema: Kai kuriais atvejais, jei „.NET“ sistema buvo išjungta, ši klaida gali būti suaktyvinta. Tam tikroms užduotims atlikti reikia, kad „.NET“ sistema būtų atnaujinta į naujausią versiją, kad jos veiktų tinkamai.

Dabar, kai jūs iš esmės suprantate problemos pobūdį, mes eisime prie sprendimų. Kad išvengtumėte konfliktų, būtinai juos įgyvendinkite ta tvarka, kuria jie pateikiami.

1 sprendimas: įjungti kriptografiją

Jei jūsų mašinoje buvo išjungta kriptografija, TLS 1.2 naudoti draudžiama. Todėl šiame žingsnyje mes įgalinsime kriptografiją. Už tai:

  1. Paspauskite „ Windows “ + „ R “, kad atidarytumėte vykdymo eilutę.
  2. Įveskite „regedit“ ir paspauskite „ Enter “.
  3. Eikite į šį adresą
    HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ v4.0.3031

    Eikite į šį adresą, jei dešiniojoje srityje nėra „ SchUseStrongCrypto “ vertės.

    HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ .NETFramework \ v4.0.30319
  4. Dešinėje srityje dukart spustelėkite parinktį „ SchUseStrongCrypto “ ir kaip reikšmės duomenis įveskite „ 1 “.
  5. Spustelėkite „ Gerai “, kad išsaugotumėte pakeitimus, ir patikrinkite , ar problema išlieka.

2 sprendimas: priversti naudoti TLS 1.2

Jei programa sukonfigūruota naudoti TLS 1.1 arba TLS 1.0 vietoj TLS 1.2, tai gali sukelti šią klaidą. Todėl šiame žingsnyje mes sukonfigūruosime savo kompiuterį naudoti TLS 1.2. Už tai:

  1. Eikite į svetainės šaknį ir dešiniuoju pelės mygtuku spustelėkite failą „global.asax“ .
  2. Iš sąrašo pasirinkite „ Peržiūrėti kodą “.
  3. Turėtų būti „ Application_Start “ metodas, prie šio metodo pridėkite šią kodo eilutę
    jei („ServicePointManager“. „SecurityProtocol“. HasFlag („SecurityProtocolType. Tls12“ == false) „SecurityProtocolType“. Tls12;              
  4. Išsaugokite pakeitimus ir patikrinkite , ar problema išlieka.

3 sprendimas: „Socket“ diegimas

Jei tam tikrame lizdo diegime yra klaida ar triktis, tai gali užkirsti kelią tam tikriems programos elementams tinkamai veikti, dėl kurių gali atsirasti ši klaida. Todėl šiame žingsnyje mes sukonfigūruosime jį naudoti kitą įgyvendinimą. Už tai:

  1. Įsitikinkite, kad turite „ StateObjec t“ klasę su „ public byte [] buffer = new byte [1024], public Socket socket; “.
  2. Iškvieskite funkciją „ Gauti („ Socket s ““ ) ir iškvieskite šį kodą lauke „ void ReceiveCallback (IAsyncResult ar)
     SocketError errorCode ; int nBytesRec = socket . EndReceive ( ar , out errorCode ); if ( errorCode != SocketError . Success ) { nBytesRec = 0 ; } 
  3. Patikrinkite, ar problema išlieka įdiegus šį kodą.

4 sprendimas: komandinių eilučių pridėjimas (tik „Entity Framework“)

Jei naudojate „Entity Framework“, gali būti, kad trūksta tam tikros kodo eilutės. Todėl šiame žingsnyje pridėsime tą kodo eilutę, kad išspręstume šią problemą. Už tai:

  1. Atidarykite „ .edmx “ failą ir po juo atidarykite „ .context.tt “ failą.
  2. Atidarykite „ .context.cs “ failą ir pridėkite šią kodo eilutę prie savo konstruktoriaus
     public DBEntities () : base ( "name=DBEntities" ) { this . Configuration . ProxyCreationEnabled = false ; // ADD THIS LINE ! } 
  3. Patikrinkite, ar problema išlieka pridėjus šią kodo eilutę.

5 sprendimas: .NET Framework atnaujinimas

Norint, kad viskas veiktų sklandžiai, reikalinga naujausia „.NET“ sistemos versija. Todėl atlikdami šį veiksmą mes atsisiųsime naujausią versiją iš svetainės ir ją įdiegsime. Už tai:

  1. Norėdami atsisiųsti sąranką, eikite į šią nuorodą.
  2. Norėdami pradėti diegimo procesą, vykdykite „ .exe “ failą.
  3. Vykdykite ekrane pateikiamas instrukcijas, kad įdiegtumėte programą savo kompiuteryje.
  4. Patikrinkite , ar baigus diegimą problema išlieka.