MVC 2アプリケーションを使用しています。欠落しているASP.Net MVCコントローラの404エラーメッセージを修正してください
しかし、現在、私は純つの低レベルを得る:「『/サイト名』アプリケーションでサーバーエラーが発生しました...」
私は素敵な404をレンダリングしますNotFound
作用を有するベースコントローラを持っていますページ。
欠落アクションが処理されます。
protected override void HandleUnknownAction(string actionName)
{
this.NotFound(actionName).ExecuteResult(this.ControllerContext);
}
ので{site}/ValidController/NotAnAction
への訪問が正しくルーティングされます。
{site}/NotAController
への訪問はありません。
私はすべてのキャッチで設定ルートを持っている:
routes.MapRoute(
"MVC routes",
"{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional });
routes.MapRoute(
"Catch All",
"{*url}",
new { controller = "System", action = "NotFound" });
キャッチがすべて正しく一致しないルートをキャッチします。
したがって{site}/Invalid/Action/id/extra
は、すべてを経由して正しくルーティングされます。
{site}/Invalid
は「MVCルート」ルート経由で取得され、ASP.NetはInvalidController
を探して、見つからない場合はダム例外をスローします。
私はweb.config
レベルでこれを無効にすることができますが、それはページにリダイレクトされることがわかります。私はルートパターンが一致するが、コントローラは有効なコントローラ名ではないことを知りたい。
どこでこの動作を捕まえて変更できますか?
おそらく、パフォーマンス低下の問題については、Application_StartでのみcontrollerConstraintを満たすことができますか? – sasjaq
これはApplication_Startにあります - .Net MVCアプリケーションの標準として。 – Keith
ああ、あなたは正しいです...私のプロジェクトを開いていないかもしれません...多分別のアプローチはいくつかの属性を使用しているかもしれません...私たちはsomルートを持っています、コントローラ名と同じではないので、 "直接"... – sasjaq