.NET 8 Docker部署异常:启动后Swagger重定向至https://localhost:0/swagger
.NET 8 Docker应用重定向到https://localhost:0/swagger的解决方法
1. 修正Visual Studio调试配置
- 打开项目属性→调试→Docker(容器)配置:
- 取消勾选
Use SSL选项 - 将
HTTP Port设置为9000,确保端口映射匹配容器内端口
- 取消勾选
- 或者直接修改
Properties/launchSettings.json,更新Docker配置段:"Docker": { "commandName": "Docker", "launchUrl": "http://localhost:9000/swagger", "environmentVariables": { "ASPNETCORE_URLS": "http://+:9000", "ASPNETCORE_ENVIRONMENT": "Development" }, "httpPort": 9000, "useSSL": false }
2. 关闭开发环境的HTTPS重定向
- 在
Program.cs中调整HTTPS重定向逻辑,仅在非开发环境启用:var builder = WebApplication.CreateBuilder(args); // ... 其他服务配置 ... var app = builder.Build(); // 仅在生产环境启用HTTPS重定向 if (!app.Environment.IsDevelopment()) { app.UseHttpsRedirection(); } // ... 中间件路由等配置 ... - 或者在
appsettings.Development.json中直接禁用HTTPS重定向:{ "HttpsRedirection": { "Enabled": false }, // ... 其他开发环境配置 ... }
3. 验证容器端口映射
- 启动应用后,执行
docker ps命令,检查容器的端口映射是否显示为0.0.0.0:9000->9000/tcp - 如果映射的是随机端口,说明VS调试配置的端口映射未正确生效,回到第一步重新配置
问题根源说明
Visual Studio调试Docker应用时,默认会自动启用HTTPS并分配随机端口,加上.NET应用默认的HTTPS重定向逻辑,会导致原本指向http://localhost:9000的请求被强制跳转到VS分配的随机HTTPS端口(显示为localhost:0)。通过上述步骤关闭HTTPS强制重定向、修正VS端口配置,即可解决跳转异常问题。
内容的提问来源于stack exchange,提问作者Hieu Nguyen
相关产品推荐
相关产品推荐

