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

.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 20:34:49