Asp.Net MVC中的404 Http错误处理程序(RC 5)

时间:2008-09-20 17:31:31

标签: asp.net-mvc http http-status-code-404

如果没有框架抛出异常500错误代码,我怎么能处理404错误?

4 个答案:

答案 0 :(得分:20)

http://jason.whitehorn.ws/2008/06/17/Friendly-404-Errors-In-ASPNET-MVC.aspx给出以下解释:

添加通配符路由规则作为最终规则:

routes.MapRoute("Error", 
                "{*url}", 
                new { controller = "Error", action = "Http404" });

任何与其他规则不匹配的请求都会路由到Error控制器的Http404操作,您还需要配置它:

public ActionResult Http404(string url) {
    Response.StatusCode = 404;
    ViewData["url"] = url;
    return View();
}

答案 1 :(得分:9)

如果请求与控制器匹配但与操作不匹配,您也可以在控制器中覆盖HandleUnknownAction。默认实现确实引发了404错误。

答案 2 :(得分:4)

抛出新的HttpException(404,“未找到资源”);

答案 3 :(得分:0)

使用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);
}