programing

서버와의 접속은 정상적으로 확립되었지만 로그인 전 핸드쉐이크 중 오류가 발생하였습니다.

bestprogram 2023. 4. 7. 22:02

서버와의 접속은 정상적으로 확립되었지만 로그인 전 핸드쉐이크 중 오류가 발생하였습니다.

Local Environment에서 프로덕션 DB를 연결하려고 하면 다음 오류가 발생합니다.

이전에 프로덕션 DB를 연결할 수 있었는데 갑자기 다음과 같은 오류가 발생했는데, 혹시 알고 계십니까?

서버와의 접속이 정상적으로 확립되었습니다만, 로그인 전 핸드쉐이크중에 에러가 발생했습니다(프로바이더:TCP 프로바이더, 에러:0 - 핸들이 무효입니다).

프로덕션 DB 연결 문자열이 있는 로컬 PC에서 asp.net 웹사이트를 실행하려고 했는데, 다음은 로컬 환경에서 발생한 오류에 대한 스택 추적입니다.

>    at MyWebsiteDAL.clsForumQuestion.SelectAll(Int32 CurrentPageIndex, Int32 PageSize) in D:\EDrive\My WebSites\MyWebsite\MyWebsite\MyWebsiteDAL\clsForumQuestion.cs:line 821
       at CodeConnect.Default.Page_Load(Object sender, EventArgs e) in D:\EDrive\My WebSites\MyWebsite\MyWebsite\MyWebsite\Default.aspx.cs:line 100
       at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
       at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
       at System.Web.UI.Control.OnLoad(EventArgs e)
       at System.Web.UI.Control.LoadRecursive()
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

여기서 뭐가 잘못됐는지 알아?

솔루션

1) VS를 청소합니다.네트워크 솔루션

2) 프로젝트의 재구축.

3) IIS 리셋

4) 프로젝트를 다시 실행합니다.

기본적으로는 문제가 해결되었습니다만, 제 경우는 이 에러가 발생하지 않고, 갑자기 로컬 환경에서 위의 에러가 발생하기 시작했기 때문에, 이 트릭은 저에게 효과가 있을지도 모릅니다.

와 dot net core에서 하였습니다.Microsoft.Data.SqlClient 해서 '먹다'를 ;TrustServerCertificate=true접속 스트링의 마지막까지를 참조해 주세요.

  • 작업 저장,
  • Studio를 닫은 Visual Studio를 .
  • 프로젝트를 다시 엽니다.

이건 나한테 효과가 있었어.

다음 명령을 실행해도 문제가 없습니다.

netsh Winsock reset

https://serverfault.com/a/487139/250527에서 확인하실 수 있습니다.

메모리 비용이 많이 드는 프로세스를 실행할 때 이 오류가 발생했습니다.시스템의 메모리가 부족하기 시작했을 때, 이러한 에러를 발견하기 시작했습니다.RAM을 더 잘 사용하기 위해 알고리즘을 변경해야 했습니다.

주의: 일부 스레드는 이 예외를 발생시켰지만 다른 스레드는 다음 예외를 발생시켰습니다.

System.Data.Sql Client.Sql Exception (0x80131904) :연결 시간 초과가 만료되었습니다.로그인 전 핸드쉐이크 확인 응답을 소비하려고 할 때 경과한 타임아웃 기간.이는 로그인 전 핸드쉐이크가 실패했거나 서버가 제시간에 응답하지 못했기 때문일 수 있습니다.이 서버에 접속을 시행하는 동안 소요된 시간은 [로그인 전] 초기화=43606; 핸드쉐이크=설정; ---> 시스템입니다.컴포넌트 모델Win32 Exception (0x80004005) :대기 작업이 시간 초과되었습니다.

메모리 사용량을 줄이기 위해 시스템을 교체한 후 두 가지 문제가 모두 사라졌습니다.

세션 데이터를 데이터베이스에 저장하는 중 연결 문자열에 Encrypt=있는 것도 같은 문제가 있었습니다.sql 클라이언트에 시큐어(SSL) 모드로 서버에 접속하도록 지시하고, 이것을 삭제하면 도움이 됩니다.

내 경우, 다음과 같습니다.

Persist Security Info=True;

삭제해야 할 연결 문자열에 저장되었습니다.일단 그렇게 하고 나면 더 이상 문제가 없었다.

몇 가지 사항을 확인해야 할 수 있습니다.

  1. 프로덕션 서버에서 원격 연결을 허용합니다.(특히 DBA가 있는 경우, 누군가가 이 기능을 해제했을 가능성이 있습니다.)

  2. 접속 문자열을 확인합니다.IP 주소 또는 서버명을 사용하고 있는 경우, 이 에러가 발생하는 경우가 있습니다.둘 다 먹어봐.

리카도의 대답에서 설명한 바와 같이,

netsh Winsock reset

나를 위해 일해왔다.

P.S. 인터넷 다운로드 매니저나 IP 설정을 변경하는 프로그램이 설치되어 있는 경우, 이 명령어를 실행한 후 컴퓨터 IDM을 재부팅하면 설정 변경을 요구받습니다.이 경우 [NO]를 설정하고 응용 프로그램을 실행합니다.

바라건대

데이터베이스에 접속할 수 없는 유사한 문제가 있어 여기서 권장 사항을 시도해 보았습니다.

결국 이렇게 된 거야

SQL 서버 구성 관리자 도구를 사용하여 SQL 서버 클라이언트 시스템에서 TCP/IP 및/또는 명명된 파이프 프로토콜을 실행.

  1. 시작을 누르고 모든 프로그램을 가리킨 다음 SQL Server 구성 관리자를 누르십시오.
  2. SQL Server 네트워크 구성을 클릭하여 확장하고 클라이언트 프로토콜을 클릭합니다.
  3. TCP/IP 프로토콜을 마우스 오른쪽 버튼으로 누른 다음 사용을 누르십시오.
  4. 명명된 파이프 프로토콜을 마우스 오른쪽 버튼으로 누른 다음 사용을 누르십시오.
  5. SQL Server 서비스를 재시작하라는 메시지가 나타나면 재시작합니다.

이 기능이 비활성화 된 이유 또는 시기는 아직 알 수 없습니다.

위의 대부분을 시도해 봤지만 아무 소용이 없었다.그 후 VPN 소프트웨어(NordVPN)를 끄면 모든 것이 정상입니다.

코드 베이스나 서버에 변경을 가하지 않고, 같은 문제가 발생하고 있었습니다.DB 서버는 100% CPU로 실행되고 SQL Server는 CPU 시간이 부족하여 타임아웃이 발생한 것으로 나타났습니다.

는, 「」를 추가할 경우가 .multisubnetfailover=true접속 스트링에 접속합니다.

SQL Server(Sharepoint) 서비스를 다시 시작했더니 문제가 해결되었습니다.

저에게 해결책은 좀비 IIS 익스프레스 워커 프로세스를 없애는 것입니다.

예를 들어 작업 관리자에서 찾은 후 작업을 종료합니다.

여기에 이미지 설명 입력

지난 한 달 동안 많은 해결책을 시도했지만 효과가 없었습니다.문제는 운영 DB가 VPN 내에 있고 ISP 공급자는 HTTP 접속이 안전하지 않다고 생각한다는 것입니다.다만, SSMS로부터 같은 실가동 DB에 접속할 수 있었습니다(TCP 사용).

해결책: 휴대폰을 핫스팟으로 사용하여 사무실/집 Wi-Fi 대신 모바일 데이터를 사용합니다.

때이는 API DB를했습니다.이 에러는 를 실행할 때만 발생합니다. 5 이미지 ):mcr.microsoft.com/dotnet/aspnet:5.0SQL Server의 TLS를 사용합니다.을 추가하여TLS의 .API Docker는 API Docker로 다운그레이드 됩니다.

sed -i s/DEFAULT@SECLEVEL=2/DEFAULT@SECLEVEL=1/g" /etc/ssl/sl.cnf를 실행합니다.

이것은 앞서 말한 이 기사에서 인용한 것이다.RUN명령어가 제안되어 문제가 해결되었습니다.제안된 수정에 대한 직접 링크는 여기에 있습니다.

저도 같은 문제가 있어서 제안된 수정이 잘 되지 않았습니다.그 후 우연히 이 기사를 보고 미르흐로부터 LSP를 차단하는 센도리라는 프로그램에 대한 코멘트를 받았습니다.컴퓨터에 어떻게 접속되어 있는지 모르지만, 거기에 있어, 삭제하면 문제가 해결됩니다.

문서가 작동하지 않으면 프로그램을 확인하고 Sendori를 제거하십시오.

여기서도 같은 문제가 발생했지만, 여기에 기재되어 있는 해답은 동작하지 않았습니다.또, 온라인으로 입수할 수 있는 해결책도 없습니다.이 문제는 Windows 10 Anniversary 업데이트가 개발 PC에 적용된 직후에 시작되었으며 이전 SQL Server 2005 인스턴스에만 영향을 미쳤습니다.웹 애플리케이션이나 SQL Management Studio를 사용하여 인스턴스에 연결할 수 없었습니다.

중요한 건 이렇게 해결했어요

  1. 실행 중인 SQL Server 버전에 따라 SQL Server 구성 관리자를 엽니다.

    • C:\Windows\SysWOW64\SQLServerManager.msc
    • C:\Windows\SysWOW64\SQLServerManager10.msc 또는
    • C:\Windows\SysWOW64\SQLServerManager12.msC 또는
    • 기타
  2. SQL Server 서비스 선택

  3. 문제가 있는 서비스를 찾아 속성을 표시합니다.

    • 예를 들어 SQL Server(SQL2005)를 사용하고 있는 경우
  4. 로그온 탭에서 "내장 계정"을 "네트워크 서비스"로 변경합니다.

이 랜덤 솔루션에서는 http://www.kutayzorlu.com/operating-systems/linux-unix-redhat-debian-ubuntu-opensuse-centos/general-server-administrating/error-fixed-a-connection-was-successfully-established-with-the-server-but-then-an-error-occurred-during-the-pre-login-handshake-12405.html과 거의 같은 내용이 기재되어 있습니다.

나는 아무 이유 없이 네트워크 서비스를 선택했다.내 시스템은 이미 로컬 시스템을 사용하도록 구성되어 있습니다.이 보안은 로컬 개발 머신에서만 문제가 발생하여 로컬에서만 액세스할 수 있기 때문에 나에게는 문제가 되지 않습니다.이게 왜 효과가 있는지 조언할 수는 없지만, 효과가 있었어요.

제 경우 원격 데이터베이스에 액세스하려고 할 때 오류가 발생했습니다.하지만 SQL Server Browser 서비스를 시작하면서 해결했습니다.

여기에 이미지 설명 입력

며칠 전부터 똑같은 문제가 있었다.이 에러에 대처하기 위해서, 코어 프로젝트에 TLS 1.2 서포트를 명시적으로 추가할 필요가 있었습니다(ServicePoint Manager).SecurityProtocol = SecurityProtocolType.Tls12;)

상세한 것에 대하여는, 다음의 링크를 참조해 주세요(저자인 Usman Khurshid씨).https://www.itechtics.com/connection-successfully-established-error-occured-pre-login-handshake/

이전 SQL Server에 연결하는 경우:

시스템에서 전환합니다.Data.SqlClient.Sql Connection을 시스템에 연결합니다.Data.OleDb.OleDbConnection

OleDb 연결 문자열 사용:

<connectionStrings>
<add name="Northwind" connectionString="Provider=SQLOLEDB.1; Data Source=MyServer; Initial Catalog=Northwind;  Persist Security Info=True; User ID=abc; Password=xyz;" providerName="System.Data.OleDb" />
</connectionStrings>

저 같은 경우에는 를 사용하고 있었습니다.Net 6 단, 엔티티 프레임워크 코어 패키지를 버전 7.0으로 업데이트했습니다.Nuget 패키지를 다운그레이드한 후 문제가 해소되었습니다.

제 생각에 이 문제의 원인은 부정확한 오류 메시지입니다.이와 같은 메시지가 표시되지만 포트가 잘못되어 있습니다.

같은 문제가 있었는데, 그 이유는 BCrypt였습니다.를 사용하여 컴파일된 넷라이브러리NET 2.0 프레임워크는 이를 사용한 프로젝트 전체가 와 함께 컴파일되었습니다.NET 4.0. 증상이 같을 경우 BCrypt 소스 코드를 다운로드하여의 릴리스 구성으로 재구축해 주세요.NET 4.0. 실행 후 "로그인 전 핸드쉐이크"는 정상적으로 동작했습니다.도움이 됐으면 좋겠다.

저는 이 오류를 경험하고 여러분들의 제안을 모두 했지만, 제 실수에 아무런 영향을 미치지 않았습니다.

범인을 잡았습니다. 만약 당신이 이걸 사용하고 있다면*.ini시스템용 파일에서는 어떤 서버 이름이 입력되었는지 확인하고 web.config 연결 문자열과 동일한지 확인할 수 있습니다.

이 경우 DB 서버에서 TLS 1.0을 다시 활성화하면 이 문제가 해결되었습니다.

이 경우 를 호스트하는 Rasberry Pi 간의 TLS 프로토콜 불일치였습니다.MSSQL이 있는 Windows Server 2012에 요청하는 Net Core 3.1 앱입니다.Windows Server 측에서 TLS 프로토콜 버전을 여러 번 변경해 봤지만 아무런 효과가 없었습니다.이 게시물 https://github.com/dotnet/SqlClient/issues/126,을 찾았습니다.이 게시물은 클라이언트 측의 변경, 즉/etc/ssl/openssl.cnfRPi쪽에서 잘 먹혔던 것 같아요.

로컬(호스트) 머신의 데이터베이스에 액세스 하고 있는 HyperV 가상 머신에서 이러한 일이 발생했습니다.기본적으로 모든 것이 정상적으로 작동하지만 재부팅 후 가상 시스템 애플리케이션에서 이 오류가 발생하기 시작하는 이상한 상황이 발생합니다.네트워크 레이어 내에 뭔가 끔찍하게 혼란스러워지고 있는 것이 있습니다.그러나 호스트 서버에서 가상 서버에 ping을 실행하면 문제가 해결되는 것 같습니다(정확한 이유는 알 수 없습니다).하지만 이게 도움이 될지도 몰라

또한 SQL Server 네트워크 구성이 '강제 암호화'로 설정되어 있는지 확인해야 합니다.이 경우 암호화된 연결에 필요한 클라이언트 주문을 수행하지 않으면 이 오류가 발생합니다.

언급URL : https://stackoverflow.com/questions/3270199/a-connection-was-successfully-established-with-the-server-but-then-an-error-occ