私のアプリケーションには、特定のルートを使用するコントローラーとデフォルト ルートを使用するコントローラーがあります。その結果、次のようなものがあります。
//.. 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/SomethingThat DoesntExist のようなものを入力すると、デフォルト ルーターによって取得されるため、キャッチオール ルート ハンドラーに到達することはありません。これは、Phil Haack のルート デバッガーで確認しました。その結果、そのコントローラー/アクションに到達しようとしますが、見つかりません。その見返りに、StructureMap は Application_Error にバブルアップするエラーをスローし、リダイレクトできません (私が試したすべての調査にもかかわらず)。
とにかく、これについて何かありますか、またはすべてのコントローラーとアクションに対して特定のルートを指定する必要がありますか?また、Application_Error() に入ったら、特定のページ/コントローラーにリダイレクトするにはどうすればよいですか?