Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc Asp.NETMVC中的404HTTP错误处理程序(RC 5)_Asp.net Mvc_Http_Http Status Code 404 - Fatal编程技术网

Asp.net mvc Asp.NETMVC中的404HTTP错误处理程序(RC 5)

Asp.net mvc Asp.NETMVC中的404HTTP错误处理程序(RC 5),asp.net-mvc,http,http-status-code-404,Asp.net Mvc,Http,Http Status Code 404,如果框架不抛出异常500错误代码,如何处理404错误?给出了以下解释: 添加通配符路由规则作为最终规则: routes.MapRoute("Error", "{*url}", new { controller = "Error", action = "Http404" }); 任何与其他规则不匹配的请求都会被路由到错误控制器的Http404操作,您还需要配置: public ActionResult Http404(strin

如果框架不抛出异常500错误代码,如何处理404错误?

给出了以下解释:

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

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错误。

抛出新的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);
}

仅供参考,上面的链接帖子返回了404(哦,讽刺)。新地址是:这里唯一的问题是这么多匹配典型的/{controller}/{action}/{id}路由。为了解决这个问题,我明确定义了我所有的路由并将其删除。不幸的是,链接不起作用。甚至是不可访问的:|这对于路由不匹配的情况很好,但在id无效时没有帮助,例如…@JasonWhitehorn 404 againGood idea。查看此解决方案,它包含一个
HandleUnknownAction
覆盖: