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

ASP.NET Core 6 API控制器可配置路由前缀404问题解决

ASP.NET Core 6 实现API控制器基础路径可配置

你遇到404的核心原因是**[ApiController]特性默认强制使用属性路由**,而你配置的是传统端点路由,两者不会协同工作。动作方法上的[HttpGet("MyDefaultAction")]只会让它响应/MyDefaultAction路径,和你配置的/temp前缀无关。

以下是两种可行的解决方案:

方案一:属性路由+可配置前缀(推荐)

这种方式符合ApiController的设计惯例,配置灵活,支持从配置文件读取前缀。

  1. 在配置文件中定义前缀(比如appsettings.json):
{
  "CustomApiPrefix": "/temp"
}
  1. 在Program.cs中读取配置:
var builder = WebApplication.CreateBuilder(args);
// 读取前缀,配置缺失时用默认值兜底
var apiPrefix = builder.Configuration["CustomApiPrefix"] ?? "/default";
  1. 修改控制器路由:
    把控制器的[Route]特性绑定到配置的前缀,动作方法使用相对路由:
[ApiController]
// 若不需要控制器名称出现在路径中,直接改为[Route($"{apiPrefix}")]
[Route($"{apiPrefix}/[controller]")]
public class MyController : ControllerBase
{
    // 访问路径示例:/temp/MyController/MyDefaultAction
    [HttpGet("MyDefaultAction")]
    public IActionResult MyDefaultAction()
    {
        return new JsonResult("Hello");
    }

    // 配置默认动作(访问/temp/MyController即可命中)
    [HttpGet("")]
    public IActionResult DefaultAction()
    {
        return new JsonResult("Default action response");
    }
}

如果不需要控制器名称在路径中,将控制器的[Route]改为[Route($"{apiPrefix}")],即可通过/temp/MyDefaultAction直接访问目标动作。

方案二:传统端点路由适配ApiController

若坚持用端点路由配置前缀,需要关闭ApiController的属性路由强制规则:

  1. 修改控制器动作的属性:
    去掉动作上的路由路径参数,仅保留[HttpGet]:
[ApiController]
public class MyController : ControllerBase
{
    [HttpGet]
    public IActionResult MyDefaultAction()
    {
        return new JsonResult("Hello");
    }
}
  1. 修正端点路由配置:
    你原代码存在字符串拼接语法错误(缺失闭合引号),修正后配置:
var app = builder.Build();

string configurablePrefix = "/temp";
app.MapControllerRoute(
    name: "MyRouteName",
    pattern: $"{configurablePrefix}/{{action=MyDefaultAction}}",
    defaults: new { controller = "MyController" });

app.Run();
  1. 关闭ApiController的属性路由强制:
    在Program.cs的AddControllers环节添加配置:
builder.Services.AddControllers(options =>
{
    // 允许传统路由与ApiController共存
    options.UseRouting();
});

配置完成后,访问/temp/MyDefaultAction或/temp(触发默认动作)均可正常响应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:35:25