You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署的Swagger UI无法访问(ERR_CONNECTION_REFUSED)求助

Docker部署的C#程序无法访问Swagger UI(ERR_CONNECTION_REFUSED)

我正在开发一个基于Docker的C#程序,正常启动后会显示Swagger UI,但当前浏览器提示“localhost拒绝连接”,错误码为ERR_CONNECTION_REFUSED。

浏览器给出的排查建议无实际帮助:

  • 检查网络连接:检查网线、调制解调器和路由器
  • 允许Microsoft Edge通过防火墙或杀毒软件访问网络:若已在允许列表中,尝试移除后重新添加
  • 若使用代理服务器:检查代理设置,或咨询组织确认代理状态;无需代理则前往系统代理设置调整

已完成的排查步骤

1. 验证localhost可用性

执行ping -a localhost结果正常,输出如下:

Commandline prompt>ping -a localhost

Pinging PORT-DDM.<servername> [::1] with 32 bytes of data:
Reply from ::1: time<1ms
Reply from ::1: time<1ms
Reply from ::1: time<1ms
Reply from ::1: time<1ms

Ping statistics for ::1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

2. 端口监听检查

发现端口5128无进程监听:

Commandline prompt>netstat -qon | findstr /I "5128"
=> no result

Commandline prompt>netstat -aon | findstr /I "5128"
=> no result

netstat -aon显示5128附近有其他端口被Docker Desktop Backend(PID 21660)监听。

3. 环境与配置确认

  • Docker其他容器运行正常,问题出在Windows更新(版本:Windows 10 Version 21H2 (OS Build 19044.2486))之后
  • 已执行docker-compose -f docker-compose.base.yml up、修复/etc/hosts文件、添加防火墙端口5128规则,问题未解决
  • 容器ASPNETCORE_ENVIRONMENT已设为DEVELOPMENT,无代理设置
  • 容器端口映射为0.0.0.0:5128->80/tcp、0.0.0.0:49154->443/tcp
  • 容器内无法安装curl,宿主机执行curl http://localhost:80返回IIS默认页面

解决思路

1. 确认容器内部程序状态

  • 查看容器启动日志:执行docker logs <容器ID/名称>,检查是否存在启动报错(如配置加载失败、依赖缺失等)
  • 验证容器内端口监听:进入容器执行netstat -ano | findstr :80(Windows容器)或ss -tulpn | grep :80(Linux容器),确认80端口是否被程序正常监听

2. 排查端口映射失效问题

  • 重启Docker Desktop:Windows更新可能导致Docker网络服务异常,重启后重新启动容器测试
  • 检查系统端口占用:执行netsh int ipv4 show excludedportrange protocol=tcp,确认5128端口是否被Windows系统预留占用
  • 临时更换映射端口:修改docker-compose.base.yml,将5128替换为其他未被占用的端口(如5129),重启容器后测试访问

3. 排除宿主机IIS干扰

  • 检查容器端口映射配置:确认docker-compose.base.yml中ports规则是否正确,是否误将宿主机80端口与容器80端口映射(与IIS冲突)
  • 临时停止宿主机IIS服务:执行net stop w3svc,重新启动容器后测试访问,验证是否为IIS导致的端口转发异常

4. 重置Windows网络与防火墙规则

  • 重置防火墙规则:执行netsh advfirewall reset,之后重新添加允许Docker端口转发的规则
  • 重置网络栈:执行netsh int ip reset和ipconfig /flushdns,修复Windows更新可能导致的网络配置异常

5. 确认程序启动配置

  • 检查程序绑定地址:确认Program.cs中是否将服务绑定到0.0.0.0(而非仅localhost,否则容器外部无法访问),或通过环境变量ASPNETCORE_URLS设置为http://0.0.0.0:80
  • 验证Swagger启用逻辑:确认在DEVELOPMENT环境下,程序是否正确启用了Swagger中间件

内容的提问来源于stack exchange,提问作者Dominique

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 15:45:54