Asp.net mvc 3 控制器未正确激活

Asp.net mvc 3 控制器未正确激活,asp.net-mvc-3,Asp.net Mvc 3,我已经在我的项目中添加了一个名为UserManager的控制器(自动从ado.net框架生成) 当我启动应用程序时,尝试导航到的操作会遇到404错误,但如果我转到,则会发现该操作并正确执行 这是控制器未被调用的情况,还是只是没有将索引视为默认操作。这些属性设置在哪里 更新 问题似乎源于默认路由设置为 "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "P

我已经在我的项目中添加了一个名为UserManager的控制器(自动从ado.net框架生成)

当我启动应用程序时,尝试导航到的操作会遇到404错误,但如果我转到,则会发现该操作并正确执行

这是控制器未被调用的情况,还是只是没有将索引视为默认操作。这些属性设置在哪里

更新

问题似乎源于默认路由设置为

"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Permits", action = "ListApplications", id = UrlParameter.Optional }
这与Usermanager的命名方案冲突(默认为索引)

我努力想知道如何添加为默认操作提供的备用路由,但最终发现路由添加的顺序决定了哪个路由接受请求(路由添加得越早,满足条件的机会就越大)


谢谢

在Global.asax.cs中,检查是否设置了默认路由:

routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", new {
        controller = "Home", 
        action  = "Index", 
        id = UrlParameter.Optional}
);

此外,请检查控制器是否名为
UserManagerController
,是否从
controller

派生。您需要确保默认路由映射将“Index”指定为global.asax文件中的默认操作

检查global.asax文件中是否有以下设置:

   routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
        );
回应你的评论:

仅通过添加新路由映射的方式。您还需要注意,将应用第一个匹配的路由映射,因此在Global.asax中指定映射的顺序至关重要。
例如,我们希望我们的FAQ控制器使用URL{id},而不使用URL中指定的操作,因此我们在默认值之前声明了以下映射:

routes.MapRoute("Faq", "Faq/{id}", new { controller = "Faq", action = "Answer" });

好的,这很有意义,有没有一种方法可以为不同的控制器指定不同的默认操作?