MVC Catch所有路线都不起作用

时间:2009-09-18 14:49:11

标签: asp.net-mvc model-view-controller routes try-catch

我的第一条路线:

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

没有解析路线(我使用Phil Haack's Route Debugger),即使是最后一条路线,“Catch All”路线也不起作用:

  //Maps any completely invalid routes to ErrorController.NotFound
  routes.MapRoute("Catch All", "{*path}",
      new { controller = "Error", action = "NotFound" }
  );

如果我转到/Admin/listArticles它可以正常工作但是/Admin给了我Error 403.15 "The Web server is configured to not list the contents of this directory."这指出我没有使用路由,因为它在目录中查找物理文件?< / p>

这是一个简单的低级路由问题,但我无法让它工作,每个人都给我链接阅读(是的,我知道MSDN在那里),但没有真正的答案。我已经研究过路线并尝试了但是我发布了这个因为我无法让它工作,任何帮助,答案?

3 个答案:

答案 0 :(得分:1)

问题可能是您已将此路线添加到默认路线下方,所有自定义路线应添加到默认路线上方。

答案 1 :(得分:1)

我的问题的答案是我有一个名为/ Admin的路由,我将错误日志写入目录/ Admin / Error似乎没有重载来指定路由是否应该被解析或是否是部分一个物理目录。

答案 2 :(得分:0)

您使用的是IIS 6.0吗?如果是这样,它需要看起来像......

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

您需要set mvc as an application extension

的位置