Як виправити помилку віддаленого хоста "Існуюче з'єднання було насильно закрито?"

Віддалений комп'ютер - це той, хто не має фізичної присутності; до нього можна отримати доступ лише через якусь комп’ютерну мережу. Віддалений хост - це комп'ютер, на якому розміщена мережа, на якій розміщений віддалений комп'ютер, а віддалений клієнт - користувач віддаленого клієнта в мережі. Ця особливість призвела до революції у багатьох процесах і має великий розмах і в майбутньому.

Існуюче з'єднання було насильно закрито помилкою локального хоста

Однак зовсім недавно надходило багато звітів про помилку " існуюче з'єднання, насильно закрите віддаленим хостом " під час спроби підключитися до віддаленого хоста. Ця помилка викликається з'єднанням між клієнтом та сервером. У цій статті ми надамо кілька життєздатних рішень, щоб повністю виправити цю помилку, а також повідомимо про причини, які викликають цю помилку.

Що спричиняє помилку віддаленого хоста "Існуюче з'єднання" в Windows?

Отримавши численні звіти від декількох користувачів, ми вирішили дослідити проблему та розробили набір рішень для її виправлення. Також ми розглянули причини, через які це спрацьовує, та перерахували їх нижче.

  • Використання TLS 1.1 / 1.0: Якщо програма працює на TLS 1.1 або TLS 1.0, це може спричинити помилку через їх амортизацію. TLS 1.2 - це шлях для вибору протоколу, який використовує програма.
  • Криптографія відключена: Якщо криптографія була відключена для вашої машини, вона запобіжить використанню TLS 1.2 і повернеться на TLS 1.0, що може викликати помилку.
  • Реалізація сокета: В деяких випадках певний тип реалізації сокета запускає помилку. Існує помилка з деякими реалізаціями додатком ".NET", і це може спричинити цю помилку.
  • Відсутній код: Для деяких людей, які використовували Entity Framework, було помічено, що певний рядок коду відсутній, через що помилка запускалася.
  • Застаріла рамка ".NET": У деяких випадках, якщо ".NET" Framework було вимкнено, ця помилка може бути спровокована. Деякі завдання вимагають оновлення фрейму ".NET" до останньої версії, щоб вони працювали належним чином.

Тепер, коли ви маєте основне розуміння природи проблеми, ми перейдемо до вирішення. Переконайтеся, що виконайте їх у певному порядку, в якому вони представлені, щоб уникнути конфліктів.

Рішення 1: Увімкнення криптографії

Якщо для Вашої машини вимкнено криптографію, використання TLS 1.2 заборонено. Тому на цьому кроці ми будемо вмикати криптографію. Для того:

  1. Натисніть « Windows » + « R », щоб відкрити рядок запуску.
  2. Введіть “regedit” та натисніть “ Enter ”.

    Введіть "Regedit" і натисніть "Enter"
  3. Перейдіть за наступною адресою
     HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ v4.0.3031 

    Перейдіть до цієї адреси, якщо на правій панелі немає значення " SchUseStrongCrypto ".

     HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ .NETFramework \ v4.0.30319 
  4. На правій панелі двічі клацніть опцію “ SchUseStrongCrypto ” та введіть “ 1 ” як дані про значення.

    Двічі клацніть значення "SchUseStrongCrypto" на правій панелі
  5. Клацніть на " OK ", щоб зберегти зміни та перевірте, чи проблема не зникає.

Рішення 2: Примушення використання TLS 1.2

Якщо програма налаштована на використання TLS 1.1 або TLS 1.0 замість TLS 1.2, це може спричинити цю помилку. Тому на цьому кроці ми налаштуємо наш комп’ютер на використання TLS 1.2. Для того:

  1. Перейдіть до кореня сайту та клацніть правою кнопкою миші на файл "global.asax" .
  2. Виберіть у списку “ Переглянути код ”.
  3. Повинен бути метод « Application_Start », додати до цього методу наступний рядок коду
     якщо (ServicePointManager. SecurityProtocol. HasFlag (SecurityProtocolType. Tls12) == false) ServicePointManager. SecurityProtocol = ServicePointManager. SecurityProtocol 

    Додавання рядків до коду
  4. Збережіть свої зміни та перевірте, чи проблема не зникає.

Рішення 3: Зміна реалізації сокета

Якщо певна реалізація сокету містить помилку або збій у ньому, це може заважати певним елементам програми функціонувати належним чином, через що ця помилка може бути спровокована. Тому на цьому кроці ми налаштуємо його на іншу реалізацію. Для того:

  1. Переконайтеся, що у вас є клас “ StateObjec t” з “ public byte [] buffer = new byte [1024], public socket socket; ".
  2. Зателефонуйте на функцію " Отримати (Socket s) " і зателефонуйте в наступний код у " недійсний ReceiveCallback (арк. IAsyncResult) "
      SocketError errorCode ; int nBytesRec = socket . EndReceive ( ar, out errorCode ); if ( errorCode != SocketError . Success ) { nBytesRec = 0 ; } 
  3. Перевірте, чи не виникає проблема після впровадження цього коду.

Рішення 4: Додавання командних рядків (лише для Entity Framework)

Якщо ви використовуєте Entity Framework, можливо, певний рядок коду може бути відсутнім. Тому на цьому кроці ми додамо цей рядок коду, щоб виправити цю проблему. Для того:

  1. Відкрийте файл " .edmx " і під ним відкрийте файл " .context.tt ".
  2. Відкрийте файл " .context.cs " і додайте наступний рядок коду до конструктора
      public DBEntities () : base ( "name=DBEntities" ) { this . Configuration . ProxyCreationEnabled = false ; // ADD THIS LINE ! } 
  3. Перевірте, чи проблема не зберігається після додавання цього рядка коду.

Рішення 5: Оновлення .NET Framework

Для того, щоб все працювало безперебійно, потрібна остання версія «.NET» Framework. Тому на цьому кроці ми завантажуємо останню версію з сайту та встановлюємо її. Для того:

  1. Перейдіть до цього посилання, щоб завантажити налаштування.
  2. Виконайте файл " .exe ", щоб розпочати процес встановлення.

    Запуск виконуваного файлу, завантаженого з Microsoft
  3. Виконайте інструкції на екрані, щоб встановити програму на комп’ютер.
  4. Перевірте, чи не виникає проблема після завершення встановлення.

Цікаві Статті