【问题标题】:MVC Catch All route not workingMVC Catch All 路由不起作用
【发布时间】:2010-11-29 12:34:31
【问题描述】:

我的第一条路线:

  //  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." 这让我想到了在目录中查找物理文件时不使用路由的想法?

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

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    问题可能是你在默认路由下面添加了这条路由,所有自定义路由都应该在默认路由上面添加。

    【讨论】:

      【解决方案3】:

      您使用的是 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-19
        • 2017-02-20
        • 1970-01-01
        • 1970-01-01
        • 2021-02-18
        相关资源
        最近更新 更多