ASP.NET MVC控制器和扩展框架

时间:2009-07-22 17:22:13

标签: .net asp.net-mvc

有没有办法从框架中捕获“找不到控制器”事件? 也许这个事件不存在。但是,如果我只是选择一个URL来抛出框架的路由系统,如:

http://localhost:54321/foobar

未经修改的最终结果是404错误。

通过自定义ControllerFactory捕获这个是最简单的方法吗?然后从那里处理它。

更新 我正在寻找一种方法来捕获和处理请求流程中的早期。不在控制器级别。请参阅Jon Galloway的回答。

2 个答案:

答案 0 :(得分:1)

我会在路线声明的末尾添加一条捕捉路线并在那里处理。

/* all your other routes here */
routes.MapRoute("NotHandled", 
  "{*url}",
  new { controller = "NotFound", action = "Index" });

答案 1 :(得分:1)

我认为这里遇到的问题多于眼睛。

特别是,当用户在有效控制器上调用有效操作并且所请求的资源(产品,文章,子类别等)不存在时会发生什么?

此外,出于搜索引擎的目的,无效网址需要返回真正的404错误。

请参阅以下帖子,详细了解这些问题:

ASP.NET MVC中基于资源的404错误的策略
http://richarddingwall.name/2008/08/17/strategies-for-resource-based-404-errors-in-aspnet-mvc/