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

如何通过app.Map()设置API接口URL根路径?配置后触发404错误求助

解决用Map()设置API根路径导致404的问题

问题根源

你的配置存在两个核心问题:

  • Map()会创建独立的分支请求管道,外部的UseHttpsRedirection、UseAuthorization等中间件不会自动作用于分支内的请求,导致请求处理流程缺失关键环节。
  • 分支内的路由配置与外部管道衔接不当,同时Swagger未适配该前缀路径,接口无法被正确识别匹配。

修正后的完整代码

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration;

var builder = WebApplication.CreateBuilder(args);

// 注册服务
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

// WebApplication.CreateBuilder已默认加载配置源,无需重复构建
var app = builder.Build();

app.UseDefaultFiles();
app.UseStaticFiles();

// 开发环境适配Swagger路径
if (app.Environment.IsDevelopment())
{
    app.UseSwagger(options =>
    {
        options.RouteTemplate = "api/v1/swagger/{documentname}/swagger.json";
    });
    app.UseSwaggerUI(options =>
    {
        options.SwaggerEndpoint("/api/v1/swagger/v1/swagger.json", "API V1");
        options.RoutePrefix = "api/v1/swagger";
    });
}

// 构建API分支的完整请求管道
app.Map("/api/v1", apiApp =>
{
    apiApp.UseHttpsRedirection();
    apiApp.UseAuthorization();

    apiApp.UseRouting();
    apiApp.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
});

app.MapFallbackToFile("/index.html");

app.Run();

补充说明

  • 若控制器使用默认路由[Route("[controller]")],现在可通过/api/v1/WeatherForecast正常访问接口。
  • 若需更精细化路由控制,也可为控制器添加前缀路由[Route("api/v1/[controller]")],但建议避免与Map()的路径重复,防止冗余。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 19:27:34