Ubuntu下Docker运行ASP.NET Core 6应用遇HTTP ERROR 404问题求助
问题排查与解决
1. Swagger仅在开发环境启用(最可能原因)
ASP.NET Core默认的Swagger配置是仅在开发环境中启用的,而你用-c Release发布了应用,容器里的Release版本不会加载Swagger UI,访问/swagger自然会返回404。
解决方法:
修改Program.cs,调整Swagger的启用逻辑,让它在Release环境也能生效:
// 替换原有的Swagger启用代码 // 方案1:所有环境都启用(适合测试场景) app.UseSwagger(); app.UseSwaggerUI(); // 方案2:指定允许的环境(比如同时支持开发和生产) if (app.Environment.IsDevelopment() || app.Environment.IsProduction()) { app.UseSwagger(); app.UseSwaggerUI(); }
修改后重新构建镜像并运行容器。
2. 确认DLL名称是否匹配
Dockerfile最后一行的TesteDocker.dll必须和你项目发布后的输出DLL名称完全一致。如果项目名称不是TesteDocker,会导致应用无法启动,进而出现404。
验证方法:
- 本地执行
dotnet publish -c Release -o out,查看out目录下的DLL文件名,替换Dockerfile中对应的名称 - 或进入容器直接查看文件:
# 进入容器 docker exec -it testedocker_container bash # 查看/app目录下的文件 ls /app
如果没有TesteDocker.dll,将ENTRYPOINT里的名称改为实际的DLL文件名。
3. 检查容器是否正常启动
查看容器日志,确认应用是否成功启动:
docker logs testedocker_container
如果日志里有报错(比如找不到DLL、端口冲突等),根据错误信息修复问题。
4. 验证基础路径可用性
先跳过Swagger,直接访问根路径http://localhost:5000。如果根路径也返回404,说明应用未正常响应,重点排查应用启动问题(比如发布内容缺失、DLL名称错误)。
内容的提问来源于stack exchange,提问作者Danilo Silva
相关产品推荐
相关产品推荐

