如何将用户重定向到ASP.NET MVC中的自定义404页面而不是抛出异常?


18

我希望能够捕获用户请求不存在的控制器并将其重定向到404页面时引发的异常。我怎样才能做到这一点?

例如,用户请求http://www.nosite.com/paeges/1应该是/pages/)。我如何使它重新定向到404而不是异常屏幕?

6

看看this page将404错误路由到指定页面。

+2

您可能需要更新的答案,包括在它的相关细节。 17 5月. 162016-05-17 05:03:44


16

只需使用一个路线:

// We couldn't find a route to handle the request. Show the 404 page. 
routes.MapRoute("Error", "{*url}", 
    new { controller = "Error", action = "404" } 
); 

由于这将是一个全球性的处理程序,把它放在默认路由下底部一路。

+6

这是正确的吗?因为肯定的是,如果我为{controller}/{action}/{id}定义路由,并且用户使用不存在的控制器输入网址,那么当第一条路由匹配时,它将会黄色屏幕,并且您的抓住一切永远不会达成? 22 10月. 082008-10-22 19:48:03

  0

我刚刚尝试过这种方式,仍然得到默认的黄色屏幕404。 15 12月. 112011-12-15 21:03:17

+1

这是行得通的,但这意味着您必须为所有控制器设置手动路由,即不需要{控制器}/{动作}/{id }'而不是你必须做'主页/ {action}/{id}','Account/{action}/{id}'等 22 1月. 132013-01-22 23:01:38

  0

@SerjSagan,现在你可以使用路由约束,比如:'routes .MapRoute( name:“Home”, url:“{action}”, 默认值:new {controller =“Home”,action =“Index”}, constraints:new {action =“Index | Help | Orders “} );' 08 3月. 162016-03-08 12:43:01


1

发现这个在同一地点 - Strategies for Resource based 404s

+1

链接只有答案是不鼓励SO。 21 10月. 162016-10-21 22:27:38