远程Linux服务器上.NET应用(API/MVC/Blazor)外部访问连接超时求解决
.NET Web API Linux服务器外网访问超时故障解决方案
确认启动配置生效范围
launchSettings.json仅为本地开发环境配置文件,仅在使用dotnet run启动调试模式、或通过Visual Studio启动项目时生效。如果是发布后直接运行编译后的dll,该配置完全不生效,需要通过以下任意一种方式指定监听地址:- 启动时追加参数:
dotnet 你的应用名称.dll --urls http://0.0.0.0:你的端口号 - 在
appsettings.json中添加根节点配置:"Urls": "http://0.0.0.0:你的端口号" - 配置系统环境变量:
export ASPNETCORE_URLS=http://0.0.0.0:你的端口号
注意:请将监听地址设置为
0.0.0.0而非服务器具体IP,0.0.0.0代表监听服务器所有网卡的请求,避免绑定单网卡导致其他来源请求被拦截。- 启动时追加参数:
验证服务监听状态
在Linux服务器上执行命令:ss -tulpn | grep 你的端口号,查看返回结果中监听地址是否为0.0.0.0:你的端口号,如果为127.0.0.1:你的端口号,说明服务仅监听本地回环请求,外部无法访问。逐层排查端口放行规则
- 服务器本地防火墙校验:
- 若使用ufw(Debian/Ubuntu默认):执行
ufw status确认已添加对应端口的入站允许规则,未添加则执行ufw allow 你的端口号/tcp - 若使用firewalld(CentOS/RHEL默认):执行
firewall-cmd --list-all确认端口已放行,未添加则执行firewall-cmd --add-port=你的端口号/tcp --permanent && firewall-cmd --reload
- 若使用ufw(Debian/Ubuntu默认):执行
- 云服务商安全组校验:
登录云服务器控制台,找到对应实例的安全组配置,添加入站规则,允许你的本地公网IP(或所有IP0.0.0.0/0)访问对应TCP端口,绝大多数该类故障都是安全组未配置导致。
- 服务器本地防火墙校验:
辅助排查手段
从你本地设备执行端口连通性测试:telnet 服务器公网IP 你的端口号,如果返回连接失败,优先排查上述防火墙、安全组、监听配置问题;如果连接成功但接口返回异常,再排查.NET应用本身的路由、跨域等配置。
内容的提问来源于stack exchange,提问作者olu
相关产品推荐
相关产品推荐

