我在我的项目中添加了一个名为UserManager的控制器(自动从ado.net框架生成)
当我启动应用程序时,尝试导航到http://server/UserManager/会遇到404错误,但如果我转到http://server/UserManager/Index,则会找到并正确执行操作。
这是控制器未被调用的情况还是仅仅没有将index视为默认操作。这些属性设置在哪里?
更新
似乎问题来自于默认路由设置为
的事实"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Permits", action = "ListApplications", id = UrlParameter.Optional }
这与Usermanager的命名方案(默认为Index)
冲突我努力与ohow一起添加提供默认操作的备用路由,但最终发现路由添加的顺序决定了哪条路由接受了请求(路由添加越早,符合条件的可能性就越大) 。)
由于
答案 0 :(得分:2)
您需要确保默认路由映射将“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 http://domain/faq/ {id}而不指定URL中指定的操作,因此我们在默认值之前声明了以下映射:
routes.MapRoute("Faq", "Faq/{id}", new { controller = "Faq", action = "Answer" });
答案 1 :(得分:1)
在Global.asax.cs中,检查是否设置了默认路由:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}", new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional}
);
另外,检查控制器是否被调用UserManagerController
,并从Controller