.NET Web API无法连接SQL Server(Windows身份验证)求助
解决Windows身份验证下.NET Web API连接SQL Server证书链不受信任问题
确认连接字符串是否被正确加载
在Program.cs或API控制器中添加代码输出实际读取的连接字符串,验证配置是否生效:// 在Program.cs中 var connectionString = builder.Configuration.GetConnectionString("DefaultConnection"); Console.WriteLine("当前使用的连接字符串:" + connectionString);排查是否存在环境变量、
appsettings.Development.json等其他配置文件覆盖默认配置的情况。检查SQL Server的强制加密设置
打开SQL Server配置管理器操作:- 展开「SQL Server网络配置」,选择目标实例(如
SQLEXPRESS)的协议 - 右键点击「TCP/IP」选择「属性」,切换到「证书」标签
- 查看「强制加密」选项,若设置为「是」,即使连接字符串指定
Encrypt=False也会强制启用加密,此时需将其改为「否」,或确保服务器证书被客户端信任。
- 展开「SQL Server网络配置」,选择目标实例(如
验证Windows身份验证权限
虽然报错指向证书,但权限问题可能引发异常混淆:- 用运行Web API的Windows账户(本地调试为当前登录账户,IIS部署为应用池账户)通过SSMS登录SQL Server实例,确认能正常访问
cv_database数据库。 - 若账户无权限,在SSMS中为该账户添加对应实例的登录权限及数据库的用户权限。
- 用运行Web API的Windows账户(本地调试为当前登录账户,IIS部署为应用池账户)通过SSMS登录SQL Server实例,确认能正常访问
更新Microsoft.Data.SqlClient包版本
旧版本的SqlClient可能存在连接字符串参数处理bug(如Encrypt=False优先级异常),在NuGet包管理器中更新Microsoft.Data.SqlClient至最新稳定版本。手动信任SQL Server自签名证书
若必须启用加密,可将SQL Server的自签名证书导入本地信任存储:- 在SQL Server配置管理器的TCP/IP属性「证书」标签中,复制证书指纹
- 打开MMC控制台,添加「证书」管理单元并选择「本地计算机」
- 展开「受信任的根证书颁发机构」->「证书」,右键选择「所有任务」->「导入」
- 按照向导找到SQL Server使用的证书(通过指纹在证书存储中定位)并完成导入。
内容的提问来源于stack exchange,提问作者KChimev
相关产品推荐
相关产品推荐

