Linux上.NET Core 6 MVC API无法连接本地SQL Server求助
解决方案
1. 修改连接字符串,指定本地回环地址+SQL Server端口
由于API和SQL Server部署在同一服务器,直接使用本地回环地址(127.0.0.1或localhost)并明确指定SQL Server监听端口(默认是1433),完全绕过SQL Server Browser服务的依赖。修改后的连接字符串示例:
"ConnectionStrings": { "ConnStr": "Data Source=127.0.0.1,1433;Initial Catalog=<DBNAME>;User Id=<USER>;Password=<PASS>;Integrated Security=False;Encrypt=False", "lockerConStr": "" }
- 若SQL Server使用非默认端口,将
1433替换为实际端口号 - 添加
Encrypt=False匹配你Python脚本的未加密连接模式,避免Linux下默认加密规则导致的连接失败
2. 验证SQL Server的监听配置
确认SQL Server正在监听本地回环地址:
- 若SQL Server运行在Linux上,执行以下命令查看监听状态:
输出需包含ss -tulpn | grep sqlservr0.0.0.0:1433或127.0.0.1:1433,表示SQL Server已开放对应地址的监听 - 若SQL Server运行在Windows上,打开SQL Server配置管理器,检查SQL Server网络配置中的TCP/IP协议,确保已启用且监听地址包含
127.0.0.1
3. 排查Linux服务器安全限制
- SELinux:临时关闭SELinux测试连接是否恢复:
若连接成功,需配置SELinux允许.NET进程访问SQL Server端口:sudo setenforce 0sudo semanage port -a -t sql_port_t -p tcp 1433 - 防火墙:检查本地防火墙是否限制了回环接口的1433端口,以firewalld为例开放端口:
sudo firewall-cmd --add-port=1433/tcp --permanent sudo firewall-cmd --reload
4. 更新Microsoft.Data.SqlClient包
确保.NET项目使用最新稳定版的Microsoft.Data.SqlClient包,旧版本在Linux环境下可能存在连接兼容性问题。在项目.csproj文件中更新引用:
<PackageReference Include="Microsoft.Data.SqlClient" Version="5.1.5" />
(可替换为当前最新稳定版本)
内容的提问来源于stack exchange,提问作者Syamim Hilmi
相关产品推荐
相关产品推荐

