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

ASP.NET Core MVC 2.0路由失效求助:路由配置问题排查

排查ASP.NET Core MVC 2.0路由失效问题

嘿,我帮你梳理了下你的路由配置,问题主要出在两个地方,咱们一个个说:

1. 路由默认值的键拼写错误

你在路由默认值里写了Controllers = "Department",但ASP.NET Core MVC的路由约定里,控制器对应的参数键是单数的controller(注意是小写c,单数形式),框架根本识别不了Controllers这个键,这就导致路由无法正确映射到你的DepartmentController。

同样,虽然Action大小写不敏感,但按框架约定建议用小写的action,保持代码一致性。

2. 路由顺序与默认值逻辑矛盾

ASP.NET Core的路由是按注册顺序从上到下匹配的,更具体的路由规则应该放在前面,避免被更宽泛的规则提前拦截。另外你的route2配置逻辑有问题:

builder.MapRoute("route2", "Department/Add", new { Controllers = "Department", Action = "Index" });

这条规则意味着当用户访问Department/Add路径时,框架会去执行DepartmentController.Index方法,而不是Add方法——这大概率和你的预期相反吧?如果你的目的是访问Department/Add时触发Add动作,这个默认值完全是多余的,甚至是错误的。

修正后的路由配置

我把你的代码修正了一下,你可以直接参考:

public static class ApplicationRouteProfiler { 
    public static void Routing(IRouteBuilder builder) { 
        // 先注册更具体的路由,避免被宽泛规则拦截
        builder.MapRoute(
            name: "route2",
            template: "Department/Add",
            defaults: new { controller = "Department", action = "Add" }
        ); 
        // 根路径默认路由,访问网站根目录时触发Department/Add
        builder.MapRoute(
            name: "route1",
            template: "",
            defaults: new { controller = "Department", action = "Add" }
        ); 
    } 
}

另外顺便提下,你的类名ApplicationRoteProfiler和方法名Routeing有拼写错误,应该是ApplicationRouteProfiler和Routing,虽然这不是路由失效的直接原因,但规范命名能减少后续维护的麻烦。

最后别忘了确认你的DepartmentController里确实存在Add和Index方法,并且继承自Controller基类哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:45:32