수정 방법 & lsquo; 원격 호스트에 의해 기존 연결이 강제로 종료되었습니다 & rsquo; 오류?

원격 컴퓨터는 물리적 존재가없는 컴퓨터입니다. 일종의 컴퓨터 네트워크를 통해서만 액세스 할 수 있습니다. 원격 호스트는 원격 컴퓨터를 호스팅하는 네트워크를 호스팅하는 컴퓨터이고 원격 클라이언트는 네트워크에서 원격 클라이언트의 사용자입니다. 이 기능은 많은 프로세스에 혁명을 일으켰으며 앞으로도 큰 범위를 갖습니다.

그러나 아주 최근에 원격 호스트 에 연결을 시도하는 동안 " 기존 연결이 원격 호스트에 의해 강제로 닫혔습니다 "오류에 대한 많은보고가 접수되었습니다 . 이 오류는 클라이언트와 서버 간의 소켓 연결로 트리거됩니다. 이 기사에서는이 오류를 완전히 수정하고이 오류를 유발하는 이유를 알려줄 몇 가지 실행 가능한 솔루션을 제공합니다.

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"프레임 워크가 비활성화 된 경우이 오류가 트리거 될 수 있습니다. 특정 작업이 제대로 작동하려면 ".NET"프레임 워크를 최신 버전으로 업데이트해야합니다.

이제 문제의 본질에 대한 기본적인 이해를 얻었으므로 해결책으로 넘어갈 것입니다. 충돌을 피하기 위해 제시된 특정 순서대로 구현해야합니다.

솔루션 1 : 암호화 활성화

컴퓨터에서 암호화가 비활성화 된 경우 TLS 1.2 사용이 금지됩니다. 따라서이 단계에서는 암호화를 활성화합니다. 그에 대한:

  1. " Windows "+ " R "을 눌러 실행 프롬프트를 엽니 다.
  2. 에 입력 "regedit를" 하고 " 입력 ".
  3. 다음 주소로 이동
    HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ v4.0.3031

    오른쪽 창에 " SchUseStrongCrypto "값 이 없으면이 주소로 이동합니다 .

    HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ .NETFramework \ v4.0.30319
  4. 오른쪽 창에서 " SchUseStrongCrypto "옵션을 두 번 클릭 하고 값 데이터로 " 1 "을 입력 합니다.
  5. 확인 ”을 클릭 하여 변경 사항을 저장 하고 문제가 지속되는지 확인 하십시오.

해결 방법 2 : TLS 1.2 사용 강제

애플리케이션이 TLS 1.2 대신 TLS 1.1 또는 TLS 1.0을 사용하도록 구성된 경우이 오류가 트리거 될 수 있습니다. 따라서이 단계에서는 TLS 1.2를 사용하도록 컴퓨터를 구성합니다. 그에 대한:

  1. 사이트의 루트로 이동하여 "global.asax" 파일을 마우스 오른쪽 버튼으로 클릭 합니다.
  2. 목록에서 " 코드 보기 "를 선택 합니다.
  3. " Application_Start "메서드 가 있어야합니다. 해당 메서드에 다음 코드 줄을 추가합니다.
    if (ServicePointManager. SecurityProtocol. HasFlag (SecurityProtocolType. Tls12) == false) SecurityProtocolType. Tls12;              
  4. 변경 사항을 저장 하고 문제가 지속되는지 확인 하십시오.

솔루션 3 : 소켓 구현 변경

특정 소켓 구현에 버그 또는 결함이있는 경우이 오류가 트리거 될 수있는 응용 프로그램의 특정 요소가 제대로 작동하지 않을 수 있습니다. 따라서이 단계에서는 다른 구현을 사용하도록 구성합니다. 그에 대한:

  1. " StateObjec t"클래스와 " public byte [] buffer = new byte [1024], public Socket socket; “.
  2. Receive (Socket s) ”함수를 호출하고“ void ReceiveCallback (IAsyncResult ar) ” 에서 다음 코드를 호출합니다.
     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 ”파일을 실행하십시오 .
  3. 에 따라 컴퓨터에 응용 프로그램을 설치하려면 화면의 지시에.
  4. 설치를 완료 한 후에도 문제가 지속되는지 확인 하십시오.