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

WebAPI路由异常:Swagger意外成为接口URL路径前缀

解决Swagger路径被追加到接口URL的问题

这问题我之前踩过坑!看你贴的代码,问题出在两个地方:SwaggerEndpoint的相对路径配置和中间件顺序混乱,导致Swagger错误地把自己的路径前缀加到了接口URL里。

问题根源分析

  1. 相对路径导致前缀继承:你在UseSwaggerUI里写的./v1/swagger.json是相对路径,当你访问url.com/Swagger页面时,这个相对路径会被解析成url.com/Swagger/v1/swagger.json,Swagger读取这个配置后,会默认把当前页面的路径前缀/Swagger加到所有接口的URL上。
  2. 中间件顺序重复且错误:你重复调用了app.UseDeveloperExceptionPage(),而且Swagger相关中间件的位置也不对,干扰了路由的正常解析。

修复步骤

直接修改你的Configure方法,按下面的代码调整:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseHsts();
    }

    // 先处理HTTPS重定向和认证,再处理Swagger和Mvc
    app.UseHttpsRedirection();
    app.UseAuthentication();

    // Swagger配置放在Mvc之前
    app.UseSwagger();
    app.UseSwaggerUI(c =>
    {
        // 把相对路径改成绝对路径,从根目录开始解析
        c.SwaggerEndpoint("/swagger/v1/swagger.json", "LA NOSA - FE API");
        
        // 可选:如果想直接通过根路径访问Swagger(比如url.com/),可以加上这行
        // c.RoutePrefix = string.Empty;
    });

    app.UseMvc();
}

修复原理

  • 绝对路径消除前缀干扰:/swagger/v1/swagger.json是从网站根目录出发的绝对路径,Swagger读取这个配置时,会正确识别接口的基础URL是url.com/,不会再错误追加/Swagger前缀。
  • 规范中间件顺序:按环境配置 → HTTPS重定向 → 认证 → Swagger → Mvc的顺序排列,完全符合ASP.NET Core中间件的执行逻辑,避免路由解析出现异常。同时移除了重复的UseDeveloperExceptionPage(),防止生产环境暴露敏感错误信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:43:39