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

.NET Core Web API路由无法访问,访问接口URL报404是否是路由配置错误?

路由配置错误说明及修复方案

你的路由配置存在多处语法和规则错误,直接导致404找不到资源,具体问题和修复方法如下:

具体错误点

  • 控制器路由模板语法错误:[Route("{api/{controller}")] 多写了开头的{,且控制器占位符需使用方括号[controller](方括号为系统保留占位符,会自动替换为当前控制器名称,花括号代表自定义路由参数),该写法本身就是不合法的路由模板
  • Action路由模板使用了绝对路径:[Route("/{action}")] 开头的/代表这是绝对路由,不会和控制器层级的路由前缀拼接,按照这个写法该接口的实际匹配路径为https://localhost:44381/Employees,和你预期的前缀路径完全不符
  • 路由占位符使用错误:你写的{action}属于自定义路由参数,不是系统自动读取Action名称的占位符,正确的Action名称占位符为[action]

修复代码

方案1:固定Action路由名

[ApiController]
[Route("api/[controller]")]
public class HomeController : ControllerBase
{
    // 直接指定Action路由名,会和控制器前缀拼接为 api/Home/Employees
    [HttpGet("Employees")]
    public IActionResult Employees()
    {
        return Ok("All Employees");
    }
}

方案2:通用路由前缀配置(适合控制器下有多个Action的场景)

[ApiController]
// 控制器层级直接拼接action占位符,所有Action都会自动带上前缀
[Route("api/[controller]/[action]")]
public class HomeController : ControllerBase
{
    [HttpGet]
    public IActionResult Employees()
    {
        return Ok("All Employees");
    }

    // 其他Action也会自动匹配 api/Home/[Action名] 规则
    [HttpGet]
    public IActionResult Department()
    {
        return Ok("All Departments");
    }
}

额外检查项

确保你的程序启动配置(Program.cs)中已经注册了控制器路由映射,存在如下代码:

app.MapControllers();

修复完成后使用你之前的URL https://localhost:44381/api/Home/Employees 即可正常访问接口。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:48:03