ASP.NET Core 6连接SQL Server时报错的解决方法是什么
ASP.NET Core 6 连接SQL Server报错解决方案
问题说明
基于ASP.NET Core 6开发项目时,连接SQL Server过程中触发连接错误,报错信息参考截图:
ASP.NET Core 6连接SQL Server报错截图
该报错的核心触发原因是:ASP.NET Core 6及更高版本默认启用SQL Server连接加密,未配置可信SSL证书的SQL Server实例会因证书链不受信任阻断连接。
可落地解决方案
开发环境快速修复
直接在数据库连接字符串中添加TrustServerCertificate=True配置,跳过服务端证书信任校验即可,无需额外改动服务端配置。
- 配置文件写法示例(appsettings.json):
"ConnectionStrings": { "DefaultDb": "Server=你的SQL Server实例名/地址;Database=目标数据库名;User Id=数据库登录账号;Password=对应密码;TrustServerCertificate=True;" }
- 代码注入DbContext写法示例:
builder.Services.AddDbContext<AppDbContext>(opt => opt.UseSqlServer(builder.Configuration.GetConnectionString("DefaultDb")) );
如果本地开发不需要加密传输,也可以在连接字符串中追加Encrypt=False关闭连接加密,进一步减少环境兼容问题。
生产环境规范配置
生产环境不建议跳过证书校验,避免传输链路被窃听篡改,正确配置方式:
- 为SQL Server实例配置由公共可信CA或企业内部根CA颁发的有效SSL证书
- 确保部署应用的服务器已将对应CA根证书加入受信任根证书存储
- 连接字符串保留
Encrypt=True配置,不需要额外添加TrustServerCertificate=True
额外排查项
如果添加上述配置后仍无法连接,依次排查以下问题:
- 打开SQL Server配置管理器,确认SQL Server对应实例的服务处于运行状态,同时启用TCP/IP协议
- 核对数据库登录账号密码是否正确,确认该账号已被授予目标数据库的对应读写权限
- 检查数据库服务器防火墙规则,确认已开放SQL Server使用的端口(默认1433,自定义端口需在连接字符串的Server字段后追加
,端口号) - 如果使用Windows集成身份验证,在连接字符串中添加
Integrated Security=True,移除明文配置的账号密码字段
内容的提问来源于stack exchange,提问作者Bipin Neupane
相关产品推荐
相关产品推荐

