当路由不满足时抛出404错误

时间:2012-06-29 12:36:29

标签: asp.net-mvc asp.net-mvc-3

使用默认路线

  routes.MapRoute(
      "Admin",                                              // Route name
      "Admin/{action}",                           // URL with parameters
      new { controller = "Admin", action = "Index" }  // Parameter defaults
  );

我们的申请很多路线(约90%)正在运作,所以没关系。

现在,当用户输入/logon/strangeroute时,MVC offcourse会因为我的strangeroute中没有logoncontroller操作而引发错误。

使用global.asax.cs中的catch all异常处理程序,我找不到路由错误(我称之为路由错误)和另一个错误(在其余代码中抛出)之间的区别。

我想在两种错误类型之间进行区分,因为当路由发出错误时,大部分时间都是404错误,我想将用户重定向到404页面,而不是正常的,通用的错误页。

一个灵魂就是为所有页面创建所有路由并关闭现有的默认路由并实现全能路由,但我不想为每个URL创建单独的路由。

还有另一种方法吗?

1 个答案:

答案 0 :(得分:1)

测试您捕获的Exception是否为HttpException,以及是否使用GetHttpCode方法查看它是否为404.