Microsoft.Data.SqlClient - 登录前握手错误

Ste*_*ove 3 .net c# sqlclient

我正在尝试使用 Microsoft.Data.SqlClient 但无法使连接正常工作。但是,当我使用 System.Data.SqlClient 时,一切正常。

try
{
    using (var connection = new SC.SqlConnection(connectionString))
    {
        connection.Open();

        connection.State.ShouldBe(ConnectionState.Open);
    }
}
catch (Exception e)
{
    throw;
}
Run Code Online (Sandbox Code Playgroud)

连接字符串是:

"server=[[**SERVER_NAME**]];Trusted_Connection=True;database=[[**DATABASE**]];min pool size=0;max pool size=100;Application Name=Data.Tests.DotNet;timeout=120"
Run Code Online (Sandbox Code Playgroud)

我收到的错误是:

Microsoft.Data.SqlClient.SqlException
A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: HTTP Provider, error: 0 - )
Run Code Online (Sandbox Code Playgroud)

我能找到的所有内容都在“错误:0 -”之后显示一些消息。

有人可以帮忙吗?

更新

公司环境为:

  1. 开发/UAT - Ms Sql Server 2012 Enterprise(本地)
  2. 产品 - Ms Sql Server 2016 Azure(云)

连接字符串:

  1. 开发/用户测试:
"server=[[**SERVER_NAME**]];Trusted_Connection=True;database=[[**DATABASE**]];min pool size=0;max pool size=100;Application Name=Data.Tests.DotNet;timeout=120"
Run Code Online (Sandbox Code Playgroud)
  1. 生产:
"Server=tcp:[[**SERVER_NAME]],1433;database=[[**DATABASE**]];Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication='Active Directory Integrated';Application Name=Data.Tests.DotNet;"
Run Code Online (Sandbox Code Playgroud)

小智 12

将“TrustServerCertificate=true”添加到连接字符串末尾可能会解决该问题。

  • 虽然它解决了我的问题,但这是否会损害连接的安全性? (2认同)