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

代理OWIN自托管Web API中Swashbuckle的HTTPS端口异常问题

解决Swagger UI请求错误端口的问题

你的问题是Swashbuckle自动生成的API根URL错误带上了HTTPS不应该有的80端口,导致Swagger UI请求地址无效。可以通过配置RootUrl方法强制指定正确的根URL来解决:

方法一:硬编码固定根URL

适合部署环境固定的场景,直接指定正确的根地址:

configSwag.EnableSwagger("docs/{apiVersion}/swagger", c =>
{
    var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
    var commentsFileName = Assembly.GetExecutingAssembly().GetName().Name + ".XML";
    var commentsFile = Path.Combine(baseDirectory, commentsFileName);

    c.Schemes(new string[] { "https" });
    // 指定正确的根URL,去掉多余的80端口
    c.RootUrl(_ => "https://api.domain.com");

    c.SingleApiVersion("v1", "MechaChat v1 Docs");
    c.IncludeXmlComments(commentsFile);
    c.PrettyPrint();
}).EnableSwaggerUi("v1/docs/{*assetPath}", c =>
{
    c.DocExpansion(DocExpansion.List);
    c.SupportedSubmitMethods("GET", "POST");
});

方法二:从代理请求头动态获取(更灵活)

如果API部署在反向代理之后,可以从代理传递的请求头(如X-Forwarded-Host)动态获取主机地址,适配多环境:

configSwag.EnableSwagger("docs/{apiVersion}/swagger", c =>
{
    var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
    var commentsFileName = Assembly.GetExecutingAssembly().GetName().Name + ".XML";
    var commentsFile = Path.Combine(baseDirectory, commentsFileName);

    c.Schemes(new string[] { "https" });
    // 从代理头获取主机地址,无值时fallback到固定地址
    c.RootUrl(req =>
    {
        if (req.Headers.ContainsKey("X-Forwarded-Host"))
        {
            var forwardedHost = req.Headers.GetValues("X-Forwarded-Host").FirstOrDefault();
            if (!string.IsNullOrEmpty(forwardedHost))
            {
                return $"https://{forwardedHost}";
            }
        }
        return "https://api.domain.com";
    });

    c.SingleApiVersion("v1", "MechaChat v1 Docs");
    c.IncludeXmlComments(commentsFile);
    c.PrettyPrint();
}).EnableSwaggerUi("v1/docs/{*assetPath}", c =>
{
    c.DocExpansion(DocExpansion.List);
    c.SupportedSubmitMethods("GET", "POST");
});

原理:RootUrl方法会覆盖Swashbuckle自动推导的根URL,确保生成的API地址使用正确的HTTPS主机地址,不再错误附加80端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:15:38