Как да поправим грешката „Съществуващата връзка беше принудително затворена от отдалечения хост“?



Опитайте Нашия Инструмент За Премахване На Проблемите

Отдалечен компютър е този, който няма физическо присъствие; той може да бъде достъпен само чрез някаква компютърна мрежа. Отдалеченият хост е компютърът, хостващ мрежата, който хоства отдалечения компютър, а отдалеченият клиент е потребителят на отдалечения клиент в мрежата. Тази функция революционизира много процеси и има голям обхват и в бъдеще.



Съществуваща връзка беше принудително затворена от грешката на локалния хост



Съвсем наскоро обаче се появиха много доклади за „ съществуваща връзка беше принудително затворена от отдалечения хост ”Грешка при опит за свързване с отдалечения хост. Тази грешка се задейства със сокет връзка между клиент и сървър. В тази статия ще предоставим някои жизнеспособни решения за пълно отстраняване на тази грешка и ще ви информираме за причините, които предизвикват тази грешка.



Какво причинява грешката „Съществуващата връзка беше принудително затворена от отдалечения хост“ в 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“ и натиснете „ Въведете '.

    Въведете „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], публичен сокет сокет; '.
  2. Обадете се на Получаване (Socket s) ”И извикайте следния код в“ void ReceiveCallback (IAsyncResult ar) '
     SocketErrorкод на грешка; интnBytesRec=гнездо.EndReceive(С, навънкод на грешка); ако (код на грешка! = SocketError.Успех) {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 минути четене