API项目连接SQL Server失败,Blazor项目可正常连接
解决API项目连接SQL Server报"Internal connection fatal error"的问题
可能的原因及排查修复步骤
- 核对.NET版本一致性:Blazor Server和API项目的目标.NET框架版本可能不匹配,
System.Data.SqlClient在不同.NET版本下的兼容性有差异。右键两个项目→属性,确认两者的目标框架完全相同(比如都是.NET 6或.NET 7)。 - 确认连接字符串的正确性:API项目可能从错误的配置文件读取连接字符串,或者读取逻辑有问题。可以在API启动时临时打印连接字符串(仅调试用),和Blazor项目的对比,确保完全一致:
var connString = Configuration.GetConnectionString("YourConnStringKey"); Console.WriteLine(connString); - 统一SQL驱动版本:
System.Data.SqlClient是旧版驱动,两个项目的NuGet包版本可能不一样。打开NuGet包管理器,把API项目的System.Data.SqlClient版本改成和Blazor一致,或者直接换成微软推荐的Microsoft.Data.SqlClient(官方已停止对旧驱动的新增功能开发)。 - 测试SSL/TLS配置:SQL Server可能强制要求SSL连接,API的运行环境SSL设置和Blazor不同。可以在连接字符串末尾加
Encrypt=false临时测试(仅调试,生产环境谨慎使用),看是否能正常连接:Server=你的服务器地址;Database=你的数据库名;User Id=账号;Password=密码;Encrypt=false; - 检查运行权限差异:Blazor Server和API的运行权限可能不同,比如Blazor用当前用户权限,API用应用池身份或系统账户,导致无法访问SQL Server。可以临时给API的运行账户添加SQL Server的登录权限测试。
- 重置连接池:API项目可能存在连接池损坏的情况,重启API项目和SQL Server服务,清空连接池后重试。
迁移到新版驱动的快速步骤
如果旧驱动问题无法解决,建议切换到Microsoft.Data.SqlClient:
- 在API项目中卸载
System.Data.SqlClientNuGet包。 - 安装
Microsoft.Data.SqlClient包。 - 把代码里的
using System.Data.SqlClient;替换成using Microsoft.Data.SqlClient;,其他逻辑无需改动。
内容的提问来源于stack exchange,提问作者Mehdi Sh.
相关产品推荐
相关产品推荐

