• centos8+ NetCore 2.2 + Sql Server


    ow listening on: http://[::]:5000
    Application started. Press Ctrl+C to shut down.

    Unhandled Exception: System.Data.SqlClient.SqlException: A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 35 - An internal exception was caught) ---> System.Security.Authentication.AuthenticationException: Authentication failed, see inner exception. ---> Interop+OpenSsl+SslException: SSL Handshake failed with OpenSSL error - SSL_ERROR_SSL. ---> Interop+Crypto+OpenSslCryptographicException: error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol
    --- End of inner exception stack trace ---
    at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, Byte[] recvBuf, Int32 recvOffset, Int32 recvCount, Byte[]& sendBuf, Int32& sendCount)
    at System.Net.Security.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, SslAuthenticationOptions sslAuthenticationOptions)
    --- End of inner exception stack trace ---
    at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception)
    at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
    at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
    at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
    at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
    at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
    at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
    at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
    at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
    at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
    at System.Net.Security.SslStream.AuthenticateAsClient(SslClientAuthenticationOptions sslClientAuthenticationOptions)
    at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation)
    at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost)
    at System.Data.SqlClient.SNI.SNITCPHandle.EnableSsl(UInt32 options)
    --- End of inner exception stack trace ---
    at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
    at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
    at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
    at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
    at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
    at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
    at System.Data.SqlClient.SqlConnection.OpenAsync(CancellationToken cancellationToken)
    --- End of stack trace from previous location where exception was thrown ---
    at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnectionAsync(Boolean errorsExpected, CancellationToken cancellationToken)
    at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenAsync(CancellationToken cancellationToken, Boolean errorsExpected)
    at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.BeginTransactionAsync(IsolationLevel isolationLevel, CancellationToken cancellationToken)
    at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.BeginTransactionAsync(CancellationToken cancellationToken)
    at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(DbContext _, ValueTuple`2 parameters, CancellationToken cancellationToken)
    at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func`4 operation, Func`4 verifySucceeded, CancellationToken cancellationToken)
    at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(IReadOnlyList`1 entriesToSave, CancellationToken cancellationToken)
    at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)
    at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)
    at YiSha.Data.EF.SqlServerDatabase.Commit() in C: estYiShaAdmin.v2.2YiSha.DataYiSha.Data.EFDatabaseSqlServerDatabase.cs:line 69
    at YiSha.Data.EF.SqlServerDatabase.Insert[T](T entity) in C: estYiShaAdmin.v2.2YiSha.DataYiSha.Data.EFDatabaseSqlServerDatabase.cs:line 166
    at YiSha.Data.Repository.Repository.Insert[T](T entity) in C: estYiShaAdmin.v2.2YiSha.DataYiSha.Data.RepositoryRepository.cs:line 70
    at YiSha.Service.SystemManage.LogOperateService.SaveForm(LogOperateEntity entity) in C: estYiShaAdmin.v2.2YiSha.BusinessYiSha.ServiceSystemManageLogOperateService.cs:line 50
    at YiSha.Business.SystemManage.LogOperateBLL.SaveForm(LogOperateEntity entity) in C: estYiShaAdmin.v2.2YiSha.BusinessYiSha.BusinessSystemManageLogOperateBLL.cs:line 67
    at YiSha.Admin.Web.Controllers.BaseController.<>c__DisplayClass0_0.<<OnActionExecutionAsync>b__1>d.MoveNext() in C: estYiShaAdmin.v2.2YiSha.WebYiSha.Admin.WebControllersBaseController.cs:line 151
    --- End of stack trace from previous location where exception was thrown ---
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
    --- End of stack trace from previous location where exception was thrown ---
    at System.Threading.ThreadPoolWorkQueue.Dispatch()
    Aborted (core dumped)

     当访问首页的时候,则报错:

    Unhandled Exception: System.Data.SqlClient.SqlException: A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 35 - An internal exception was caught) ---> System.Security.Authentication.AuthenticationException: Authentication failed, see inner exception. ---> Interop+OpenSsl+SslException: SSL Handshake failed with OpenSSL error - SSL_ERROR_SSL. ---> Interop+Crypto+OpenSslCryptographicException: error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol

     参考了以下链接,结果还是不行。

    https://www.cnblogs.com/dawenyang/p/12985957.html

    https://docs.microsoft.com/en-us/sql/connect/ado-net/sqlclient-troubleshooting-guide?view=sql-server-ver15#login-phase-errors

    最后参考  这个https://www.cnblogs.com/study10000/p/12858192.html

    解决方案:由于我的Linux是 CentOS8_2,

    找到  /usr/share/crypto-policies/DEFAULT,修改opensslcnf.txt   配置表,实际上 SQL Server 不支持 TLS 1.2,因此才需要修改

    原始的:

    下面的修改后的



    #进入www目录 cd /var/www #启动站点,自定义端口号,运行环境
    //二种方式选其一种运行即可
    dotnet xxxxCore.dll --urls="http://*:5000"
    (关闭ssh后,程序也会关闭)
    nohup dotnet xxxxxxCore.dll --urls="http://*:5000" --environment=Delopment > /dev/null 2>&1 &
    (程序后台运行,不会关闭)

    原文链接 https://www.cnblogs.com/panjinzhao/p/14509088.html

  • 相关阅读:
    Team--时代团队第一次团队项目---基于大作业的思考
    敏捷软件开发
    求一个二维数组的最大子矩阵
    电梯调度分析(二)
    一个简单算法的设计(一个数组中连续区间和的最大值)
    电梯调度算法(-)
    "top k"问题的深入探讨
    js中判断对象是否为空的方法
    Spring Security 3.x 完整入门教程
    Filter 过滤器
  • 原文地址:https://www.cnblogs.com/panjinzhao/p/14509088.html
Copyright © 2020-2023  润新知