.NET 8 API连接SQL Server登录过程报错求助
解决.NET 8连接SQL Server时的登录解密错误
问题背景
使用.NET 8开发连接SQL Server的API,连接字符串如下:
configuration["ConnectionStrings:DBConnection"] = "Data Source=\"MYIP, MYPORT\\SQL_I5\";Initial Catalog=Pr;User ID=sa;Password=myPassword;Encrypt=false;TrustServerCertificate=true";
遇到错误:
Microsoft.Data.SqlClient.SqlException (0x80131904): 已成功与服务器建立连接,但在登录过程中发生错误。(provider: SSL Provider, error: 0 - 指定的数据无法解密。
已尝试添加TrustServerCertificate=true、设置Encrypt=false及修改参数大小写,问题仍未解决。
解决方案
1. 修正数据源格式
连接字符串中Data Source的格式存在冲突:
- 若使用端口指定,格式应为
MYIP,MYPORT(无需添加实例名,端口已唯一指向目标实例) - 若使用命名实例,格式应为
MYIP\SQL_I5(默认端口1433时可省略端口) - C#字符串中需用
\\转义反斜杠,若配置在appsettings.json中则只需单个\
2. 调整SSL相关配置
即使设置Encrypt=false,部分SQL Server环境可能强制SSL:
- 登录SQL Server配置管理器,找到对应实例的TCP/IP协议,查看强制加密是否设为
否 - 若无法修改服务器配置,尝试将连接字符串的
Encrypt改为true,保留TrustServerCertificate=true
3. 验证登录账号有效性
- 确认
sa账号已启用、未被锁定,密码无拼写错误(若密码含特殊字符,需用引号包裹或正确转义) - 检查
sa账号是否拥有目标数据库Pr的访问权限
4. 排查系统加密组件问题
- 确保客户端和服务器的.NET 8运行时安装最新补丁
- 启用客户端系统的TLS 1.2或更高版本协议,确保与SQL Server兼容
内容的提问来源于stack exchange,提问作者Sergio González
相关产品推荐
相关产品推荐

