在我的应用程序中,我有一些使用特定路由的控制器和一些使用默认路由的控制器。结果,我有这样的事情:
//.. other more specific routes
routes.MapRoute(
"Workout - Specific Workouts by exercise",
"{userName}/workouts/exercise/{exerciseID}/{exerciseName}",
new { controller = "Workout", action = "WorkoutsByExercise" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
routes.MapRoute(
"Error",
"{*catchall}",
new { controller = "Error", action = "Http404" }
);
但是,如果我键入类似〜/ Home / SomethingThatDoesntExist的内容,它将被默认路由器拾取,因此永远不会到达我的catchall路由处理程序。我通过Phil Haack的路由调试器验证了这一点。结果,它将尝试进入该控制器/动作而不会找到它。作为回报,StructureMap抛出一个错误,该错误冒泡到Application_Error,我无法重定向它(尽管我已经尝试过所有内容并通过研究)。
那么,是否还有这个或者我必须为我的控制器和操作的所有指定特定的路由以及如何在Application_Error中重定向到特定的页面/控制器( )?