Как исправить ошибку «Существующее соединение было принудительно закрыто удаленным хостом»?



Попробуйте наш инструмент устранения неполадок

Удаленный компьютер - это компьютер, который физически не присутствует; к нему можно получить доступ только через какую-то компьютерную сеть. Удаленный хост - это компьютер, на котором размещена сеть, на которой размещен удаленный компьютер, а удаленный клиент является пользователем удаленного клиента в сети. Эта функция произвела революцию во многих процессах, а также имеет большие возможности в будущем.



Существующее соединение было принудительно закрыто из-за ошибки локального хоста



Однако совсем недавно появилось много сообщений о « существующее соединение было принудительно закрыто удаленным хостом ”Ошибка при попытке подключения к удаленному хосту. Эта ошибка возникает при сокетном соединении между клиентом и сервером. В этой статье мы предложим несколько жизнеспособных решений, чтобы полностью исправить эту ошибку, а также проинформируем вас о причинах, вызывающих эту ошибку.



Что вызывает ошибку «Существующее соединение было принудительно закрыто удаленным хостом» в 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 '+' р », Чтобы открыть окно« Выполнить ».
  2. Печатать 'Regedit' и нажмите ' Войти '.

    Набрав «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. Нажмите на ' Хорошо », Чтобы сохранить изменения и чек чтобы узнать, сохраняется ли проблема.

Решение 2. Принудительное использование TLS 1.2

Если приложение было настроено на использование TLS 1.1 или TLS 1.0 вместо TLS 1.2, это может вызвать эту ошибку. Поэтому на этом этапе мы настроим наш компьютер для использования TLS 1.2. Для этого:

  1. Перейдите в корень сайта и щелкните правой кнопкой мыши «Global.asax» файл.
  2. Выбрать ' Посмотреть Код »Из списка.
  3. Должен быть знак « Application_Start ”Добавьте в этот метод следующую строку кода.
    если (ServicePointManager.Протокол безопасности.HasFlag(SecurityProtocolType.Tls12) == ложный) SecurityProtocolType.Tls12;

    Добавление строк в код

  4. Сохранить ваши изменения и чек чтобы узнать, сохраняется ли проблема.

Решение 3. Изменение реализации сокета

Если в определенной реализации сокета есть ошибка или сбой, это может помешать правильному функционированию определенных элементов приложения, из-за чего эта ошибка может быть вызвана. Поэтому на этом этапе мы настроим его для использования другой реализации. Для этого:

  1. Убедитесь, что у вас есть « StateObjec t »класс с« публичный байт [] буфер = новый байт [1024], публичный сокет Socket; '.
  2. Назовите « Получить (сокеты) »И вызовите следующий код в« void ReceiveCallback (IAsyncResult ar) '
     Ошибка сокетакод ошибки; intnBytesRecзнак равноразъем.EndReceive(С участием, изкод ошибки); если (код ошибкизнак равно Ошибка сокета.Успех) {nBytesRecзнак равно 0; }
  3. Проверьте, сохраняется ли проблема после внедрения этого кода.

Решение 4. Добавление командных строк (только для Entity Framework)

Если вы используете Entity Framework, возможно, какая-то строка кода отсутствует. Поэтому на этом этапе мы добавим эту строку кода, чтобы исправить эту проблему. Для этого:

  1. Откройте свой ' .edmx 'Файл и откройте' .context.tt »Файл под ним.
  2. Открыть ' .context.cs ”И добавьте в конструктор следующую строку кода.
    общественный DBEntities() : база('имя = DBEntities') { это.Конфигурация.ProxyCreationEnabled знак равно ложный; // ДОБАВИТЬ ЭТУ СТРОКУ! }
  3. Проверьте, сохраняется ли проблема после добавления этой строки кода.

Решение 5. Обновление .NET Framework

Последняя версия «.NET» Framework требуется для того, чтобы все работало бесперебойно. Поэтому на этом этапе мы загрузим последнюю версию с сайта и установим ее. Для этого:

  1. Перейдите к это ссылка для загрузки установки.
  2. Выполните « .Exe ”Файл, чтобы начать процесс установки.

    Запуск исполняемого файла, загруженного с Microsoft

  3. следить экранные инструкции по установке приложения на ваш компьютер.
  4. Проверьте чтобы увидеть, сохраняется ли проблема после завершения установки.
3 минуты на чтение