执行update-database命令时遭遇SSL证书信任问题求助
我的数据库连接字符串如下:
Server=DESKTOP-4P98T57;Encrypt =True; Integrated Security = True;Trusted_Connection=SSPI;Initial Catalog=namedatabase;TrustServerCertificate=True; Persist Security Info=true;User ID=sa;Password=123456;MultipleActiveResultSets=true;
执行update-database命令时出现错误:
已成功与服务器建立连接,但在登录过程中发生错误。(提供程序: SSL 提供程序, 错误: 0 - 证书链由不受信任的机构颁发。)
已尝试设置TrustServerCertificate=true、调整Encrypt值、开启SQL Server的Trust Server Certificate选项,使用Visual Studio 2022和.NET 7,以下是可行的解决步骤:
移除冲突的认证配置:连接字符串中同时存在Windows认证(
Integrated Security=True/Trusted_Connection=SSPI)和SQL Server认证(User ID=sa;Password=123456),两者互斥,需删除其中一组。例如使用SQL认证的话,连接字符串改为:Server=DESKTOP-4P98T57;Encrypt=True;Initial Catalog=namedatabase;TrustServerCertificate=True;Persist Security Info=true;User ID=sa;Password=123456;MultipleActiveResultSets=true;在EF Core中显式配置信任证书:在DbContext的
OnConfiguring方法中强制开启信任服务器证书,避免配置被覆盖:protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(YourConnectionString, options => { options.TrustServerCertificate(true); }); }验证SQL Server的SSL设置:打开SQL Server配置管理器,找到目标实例:
- 进入“SQL Server网络配置” -> “[实例名]的协议”,右键点击“TCP/IP”选择属性;
- 在“证书”选项卡确认是否指定了证书,若使用自签名证书需确保已选中;
- 在“标志”选项卡确认“Trust Server Certificate”已设置为“是”。
清理数据库连接池:重启Visual Studio,或者在调试代码中添加
SqlConnection.ClearAllPools();清理旧连接缓存,避免残留配置影响。更新SQL Client包:通过NuGet包管理器更新
Microsoft.Data.SqlClient或System.Data.SqlClient到最新版本,旧版本可能存在参数解析问题。
内容的提问来源于stack exchange,提问作者samane farhadi rad

