使用属性路由升级到 MVC5 后默认路由不起作用

Default Route does not work after upgrading to MVC5 with Attribute Routing

从具有 AttributeRouting.net 的 MVC4 升级到具有 MVC5 属性路由的 MVC5 后,我似乎无法使默认路由正常工作,因此 http://server 默认为 http://server/home/index 。直接浏览 /home//home/index 即可。

对于路由配置,我有这个:

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapMvcAttributeRoutes();
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

HomeController 声明如下所示:

// Controller
[RoutePrefix("home")]
public class HomeController : MvcControllerBase
....
    // Action
    [HttpGet, Route, Route("index")]
    public ActionResult Index()
    {
   .....

我不确定还有什么地方可以检查。我已经注释掉了全局中的所有内容并禁用了所有 WebActivator 激活的项目。

和想法?响应是 404,没有抛出异常。

啊..明白了!

基于 Kiran 对 : Specify default controller/action route in WebAPI using AttributeRouting

的回答

我将 HomeController 更改为:

// Controller
public class HomeController : MvcControllerBase
....
    // Action
    [HttpGet, Route, Route("home"), Route("home/index")]
    public ActionResult Index()
    {
....

而且我摆脱了 MVC 配置默认设置。