Google Cloud Debian VM上.NET 6应用Http请求被拒(ECONNREFUSED)求助
解决Google Cloud Debian VM上.NET 6应用的连接拒绝问题
1. 修正.NET应用的监听地址
.NET 6默认只监听localhost(127.0.0.1),外部请求根本打不进来。你得改成监听所有网卡的地址,三种方法选一种就行:
- 启动时直接指定URL:
dotnet run --urls "http://0.0.0.0:5000" - 修改
appsettings.json配置文件:{ "Urls": "http://0.0.0.0:5000" } - 设置环境变量再启动:
export ASPNETCORE_URLS="http://0.0.0.0:5000" dotnet YourApp.dll
2. 确认应用真的在监听端口
改完配置重启应用,跑下面的命令检查5000端口是否被占用:
sudo netstat -tulpn | grep :5000
要是能看到dotnet进程对应0.0.0.0:5000的记录,说明监听配置没问题。
3. 检查VM内部的防火墙规则
Debian自带的iptables可能会拦请求,哪怕GCP控制台开了防火墙也没用:
- 先看当前iptables规则:
sudo iptables -L - 临时放行5000端口的入站请求:
sudo iptables -A INPUT -p tcp --dport 5000 -j ACCEPT - 要永久生效的话,装个工具保存规则:
sudo apt-get install iptables-persistent sudo netfilter-persistent save
4. 核对GCP防火墙规则的细节
你虽然开了5000端口,但得确保这几个点没搞错:
- 目标标签:规则的目标要包含你的VM用的网络标签,要是没设标签就选“所有实例”
- 来源IP:测试阶段可以暂时设成
0.0.0.0/0(允许所有IP访问),之后再缩范围 - 协议端口:必须是
tcp:5000,别选成udp或者其他协议
5. 验证网络连通性
- Postman里一定要用VM的外部IP,别填内部IP或者localhost
- 在VM内部先测本地访问:
能返回内容说明应用本身没问题;再测外部IP:curl http://localhost:5000
要是这个失败,回头检查前面的监听和防火墙配置。curl http://[你的VM外部IP]:5000
内容的提问来源于stack exchange,提问作者Иван Комаров
相关产品推荐
相关产品推荐

