使用EF Core连SQL Server遇Internal Connection Fatal Error但直接用Microsoft.Data.SqlClient正常
解决EF Core连接SQL Server时的"Internal connection fatal error"问题
可能的原因及修复方案
1. 对齐EF Core与SQL Server驱动版本兼容性
你当前使用的EF Core 6.0.7,若搭配的Microsoft.Data.SqlClient版本不兼容,会触发连接错误。EF Core 6.x推荐使用适配的稳定版本:
- 打开项目的NuGet包管理器,卸载现有
Microsoft.EntityFrameworkCore.SqlServer,重新安装指定版本:
该版本会自动匹配兼容的Microsoft.Data.SqlClient版本,规避驱动不兼容问题。Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 6.0.25
2. 调整连接字符串的加密配置
尽管已添加TrustServerCertificate=True,可尝试显式指定加密模式:
修改连接字符串为:
Server=localhost\SQLEXPRESS;Database=webTools;TrustServerCertificate=True;MultipleActiveResultSets=true;Integrated Security=true;Encrypt=Optional
Encrypt=Optional会强制驱动不要求加密连接,避免本地SQL Server Express的默认加密配置冲突。
3. 启用SQL Server的TCP/IP协议
本地SQL Server Express默认可能禁用TCP/IP协议,导致EF Core无法建立稳定连接:
- 打开
SQL Server配置管理器 - 展开
SQL Server网络配置->SQLEXPRESS的协议 - 右键
TCP/IP选择启用 - 重启
SQL Server (SQLEXPRESS)服务
4. 替换连接字符串中的服务器标识
尝试用(localdb)\MSSQLLocalDB或本地IP替代localhost\SQLEXPRESS,比如:
Server=(localdb)\MSSQLLocalDB;Database=webTools;TrustServerCertificate=True;MultipleActiveResultSets=true;Integrated Security=true
或者使用本地IP:
Server=127.0.0.1\SQLEXPRESS;Database=webTools;TrustServerCertificate=True;MultipleActiveResultSets=true;Integrated Security=true
部分场景下localhost的解析逻辑会在EF Core连接流程中引发异常。
5. 验证项目目标框架版本
确保ASP.NET Core项目的目标框架与EF Core版本匹配,EF Core 6.x对应.NET 6:
- 右键项目 ->
属性->应用程序,确认目标框架为.NET 6.0。
内容的提问来源于stack exchange,提问作者Hex
相关产品推荐
相关产品推荐

