You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级.NET后SQL Server 2022 SSL证书连接异常求助

.NET 6升级到.NET 8后SQL Server SSL连接异常问题

将C#项目从.NET 6升级到.NET 8后,出现以下SQL连接错误:

Microsoft.Data.SqlClient.SqlException (0x80131904): 已成功与服务器建立连接,但登录过程中发生错误。(provider: SSL Provider, error: 0 - 目标主体名称不正确。)

此前SQL Server 2017无法安装通配符SSL证书,使用自签名证书时会报错:

已成功与服务器建立连接,但登录过程中发生错误。(provider: SSL Provider, error: 0 - 证书链由不受信任的机构颁发。)

为此已将SQL Server升级到2022,Windows Server升级到2022,但问题仍未解决,尝试过以下操作:

  • 使用通配符证书(服务器已接受),仍出现「目标主体名称不正确」错误
  • 执行SQL语句修改服务器名称并重启服务,问题依旧:
SELECT @@SERVERNAME
EXEC sp_dropserver 'SERVER';
GO
EXEC sp_addserver 'FQDN SERVER NAME', local;
GO

(示例FQDN为server.domain.com)

  • 通过PowerShell重新生成自签名证书,在SQL管理器中重置证书并重启服务器,错误仍存在:
New-SelfSignedCertificate -Type SSLServerAuthentication -Subject "CN=FQDN Server" -FriendlyName "SQL Server Test self-signed" -DnsName "FQDN Server",'localhost.'  -KeyAlgorithm RSA -KeyLength 2048 -Hash 'SHA256' -TextExtension '2.5.29.37={text}1.3.6.1.5.5.7.3.1' -NotAfter (Get-Date).AddMonths(24) -KeySpec KeyExchange -Provider "Microsoft RSA SChannel Cryptographic Provider"-CertStoreLocation "Cert:\LocalMachine\My"
  • 购买新的SSL证书,通过MMC创建请求并安装,重启服务后问题依旧
  • 尝试多种连接字符串组合,包括Trusted_Connection=True;、Encrypt=false; TrustServerCertificate=true;等,修改服务器名称反复测试均无效
  • 调整SQL Server网络配置的「强制加密」开关:关闭时其他应用可正常连接,开启时所有连接失败,推测SSL证书交互存在问题
  • MMC中查看所有证书均正常,且都包含私钥

UPDATE:在项目中编写测试代码,使用与appsettings.json完全相同的连接字符串,可成功连接数据库并读取记录,无任何错误。测试代码如下:

private async static Task<bool> TestSQL()
{
    var connectionString = "Server=server.domain.com;Database=myDb;Persist Security Info=True;User ID=MyUser;Password=MyPass;MultipleActiveResultSets=true;Encrypt=true;TrustServerCertificate=true;";
    using (var connection = new SqlConnection(connectionString))
    {
        try
        {
            await connection.OpenAsync();
            Console.WriteLine("Connected successfully!");

            // Retrieve one record from the "Customers" table
            var sqlQuery = "SELECT TOP 1 * FROM Customers";
            using (var command = new SqlCommand(sqlQuery, connection))
            {
                using (var reader = await command.ExecuteReaderAsync())
                {
                    if (await reader.ReadAsync())
                    {
                        // Assuming "Customers" table has a column called "CustName"
                        var custName = reader["CustName"].ToString();
                        Console.WriteLine($"Customer Name: {custName}");
                    }
                    else
                    {
                        Console.WriteLine("No records found in the 'Customers' table.");
                    }
                }
            }

            return true;
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error connecting to SQL server: " + ex.Message);
            return false;
        }
    }
}

这是Entity Framework或.NET的Bug吗?


内容的提问来源于stack exchange,提问作者JayTee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 00:01:31