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

无法访问Docker化的.NET 6 API问题排查求助

问题原因及解决办法

核心问题:端口映射不匹配

从更新的容器日志可以明确看到,.NET API在容器内部监听的是80端口:

Now listening on: http://[::]:80

但你启动容器时使用的端口映射是--publish 8090:8080,这意味着把宿主机的8090端口转发到容器的8080端口——而你的应用根本没在容器的8080端口监听,自然无法收到请求,导致返回空响应。

解决步骤

  1. 修正容器启动的端口映射命令
    把端口映射改为8090:80,让宿主机端口直接指向容器内应用实际监听的端口:

    # 先停止旧的api容器(替换成你的容器ID或名称)
    docker stop <your-api-container-id>
    # 重新启动容器,修正端口映射
    docker run --network my-network --publish 8090:80 -d my-custom-api
    
  2. 验证Swagger访问
    修正端口后,访问localhost:8090/swagger/index.html应该能正常加载。如果还是不行,检查你的API项目中Swagger的配置是否正确启用:
    在Program.cs中确认存在以下代码(确保只在开发环境启用的逻辑没问题):

    if (app.Environment.IsDevelopment())
    {
        app.UseSwagger();
        app.UseSwaggerUI(c => 
        {
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "My Custom API V1");
        });
    }
    
  3. 额外排查点

    • 确认宿主机的8090端口没有被其他进程占用,可以用netstat -ano | findstr :8090(Windows)或lsof -i :8090(Linux/Mac)检查。
    • 重新构建镜像后再启动容器,避免旧镜像的配置问题:
      docker build -t my-custom-api .
      docker run --network my-network --publish 8090:80 -d my-custom-api
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:40:23