Computer >> 컴퓨터 >  >> 문제 해결 >> Windows 오류

'기존 연결이 원격 호스트에 의해 강제로 닫혔습니다' 오류를 수정하는 방법?

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

 기존 연결이 원격 호스트에 의해 강제로 닫혔습니다  오류를 수정하는 방법?

그러나 아주 최근에 "원격 호스트가 기존 연결을 강제로 닫았습니다 " 원격 호스트에 연결하는 동안 오류가 발생했습니다. 이 오류는 클라이언트와 서버 간의 소켓 연결로 트리거됩니다. 이 기사에서 우리는 이 오류를 완전히 수정하고 이 오류를 유발하는 이유를 알려주는 몇 가지 실행 가능한 솔루션을 제공할 것입니다.

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" 입력 "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을 입력합니다. "를 값 데이터로 사용합니다.  기존 연결이 원격 호스트에 의해 강제로 닫혔습니다  오류를 수정하는 방법?
  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)
                {
                    ServicePointManager.SecurityProtocol = ServicePointManager.SecurityProtocol | SecurityProtocolType.Tls12;
                }
     기존 연결이 원격 호스트에 의해 강제로 닫혔습니다  오류를 수정하는 방법?
  4. 저장 변경사항 및 확인 문제가 지속되는지 확인합니다.

해결책 3:소켓 구현 변경

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

  1. "StateObjec "공개 바이트[] 버퍼 =새 바이트[1024], 공개 소켓 소켓;이 있는 t" ​​클래스 ".
  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. 확인 설치를 완료한 후에도 문제가 지속되는지 확인합니다.