20

如何在框架不抛出异常 500 错误代码的情况下处理 404 错误?

4

4 回答 4

21

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();
}
于 2008-09-20T17:38:37.593 回答
9

在请求匹配控制器但不匹配操作的情况下,您还可以在控制器中覆盖 HandleUnknownAction。默认实现确实会引发 404 错误。

于 2008-09-21T17:48:17.063 回答
4

throw new HttpException(404, "Resource Not Found");

于 2010-05-10T14:33:01.920 回答
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);
}
于 2011-12-15T19:42:00.903 回答