Asp.Net MVC の 404 HTTP エラー ハンドラー (RC 5)
-
01-07-2019 - |
質問
フレームワークが例外 500 エラー コードをスローせずにハンドラー 404 エラーを処理するにはどうすればよいですか?
解決
http://jason.whitehorn.ws/2008/06/17/Friendly-404-Errors-In-ASPNET-MVC.aspx は次のような説明をします。
ワイルドカード ルーティング ルールを最終ルールとして追加します。
routes.MapRoute("Error",
"{*url}",
new { controller = "Error", action = "Http404" });
別のルールに一致しないリクエストは、エラー コントローラーの Http404 アクションにルーティングされます。これも構成する必要があります。
public ActionResult Http404(string url) {
Response.StatusCode = 404;
ViewData["url"] = url;
return View();
}
他のヒント
リクエストがコントローラーには一致するが、アクションには一致しない場合には、コントローラー内で HandleUnknownAction をオーバーライドすることもできます。デフォルトの実装では 404 エラーが発生します。
throw new HttpException(404, "リソースが見つかりません");
MVC 3 では、HttpNotFound() を返して 404 を適切に返すことができます。
このような:
public ActionResult Download(string fontName)
{
FontCache.InitalizeFonts();
fontName = HttpUtility.UrlDecode(fontName);
var font = FontCache.GetFontByName(fontName);
if (font == null)
return HttpNotFound();
return View(font);
}
所属していません StackOverflow