質問

フレームワークが例外 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);
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top