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

使用Docker运行ASP.NET Core Web API时遇连接拒绝问题求助

ASP.NET Core Web API Docker运行后连接被拒绝的排查方案

问题描述

我使用Visual Studio创建了一个ASP.NET Core Web API项目,并添加了自定义Dockerfile:

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app

COPY *.csproj ./
RUN dotnet restore

COPY . .
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app/out ./

EXPOSE 80

ENTRYPOINT ["dotnet", "weatherapplication.dll"]

尝试通过以下命令运行该应用:

docker build -t weatherapplication .
docker run -dp 127.0.0.1:4003:80 weatherapplication

但在浏览器中访问http://localhost:4003/weatherforecast时,显示“ERR_CONNECTION_REFUSED”错误。

排查与解决步骤

  • 核对DLL文件名是否正确
    ENTRYPOINT中指定的weatherapplication.dll必须和项目发布后的实际DLL名称完全一致(注意大小写)。可以进入容器查看文件列表确认:

    docker exec -it <容器ID> ls /app
    

    如果文件名不匹配,直接修改ENTRYPOINT中的DLL名称即可。

  • 检查容器内服务启动状态
    通过容器日志排查服务启动是否报错:

    docker logs <容器ID>
    

    日志中如果出现找不到DLL、配置文件错误、端口占用等信息,针对性修复即可。

  • 验证端口映射与容器运行状态
    先确认容器是否正常运行:

    docker ps
    

    查看STATUS列是否为Up状态。如果是,可尝试修改端口映射为0.0.0.0:4003:80,避免仅绑定本地回环地址导致的访问限制:

    docker run -dp 0.0.0.0:4003:80 weatherapplication
    

    之后重新访问接口地址。

  • 检查ASP.NET Core监听配置
    确认项目的Program.cs或appsettings.json中,服务监听的端口和地址是否正确。比如Program.cs中如果有类似以下代码:

    app.Run("http://0.0.0.0:5000");
    

    说明容器内服务实际监听5000端口,此时需要将端口映射改为4003:5000。确保服务监听0.0.0.0:80才能让容器正常转发请求。

  • 排查本地防火墙与代理干扰
    本地防火墙可能会拦截4003端口的请求,可暂时关闭防火墙测试;或者更换一个未被占用的端口重新运行容器:

    docker run -dp 127.0.0.1:4004:80 weatherapplication
    

    同时检查是否有VPN、代理软件干扰了本地请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:28:12