C# ASP.NET MVC route.config中的路由问题

C# ASP.NET MVC route.config中的路由问题,c#,asp.net-mvc,routes,C#,Asp.net Mvc,Routes,我的routeConfig文件有问题。我的理解是,当它进行处理时,它会经过并找到匹配项,而不应该关心顺序 如果我错了,请纠正我。我有一个正在工作的项目,开发它已经有一段时间了,我的所有自定义路线都在routeConfig文件中。最后,我离开了默认路线。这是为了捕获任何不遵循自定义路由的链接 我确实在某一点上删除了它,它破坏了网站。所以我把它放在了最后。现在在这个新项目中,我也做了同样的事情。出于某种原因,它似乎忽视了路线。特别是我有一个资源管理器,它在一个目录中显示一个文件夹列表,它有一个自定义

我的routeConfig文件有问题。我的理解是,当它进行处理时,它会经过并找到匹配项,而不应该关心顺序

如果我错了,请纠正我。我有一个正在工作的项目,开发它已经有一段时间了,我的所有自定义路线都在routeConfig文件中。最后,我离开了默认路线。这是为了捕获任何不遵循自定义路由的链接

我确实在某一点上删除了它,它破坏了网站。所以我把它放在了最后。现在在这个新项目中,我也做了同样的事情。出于某种原因,它似乎忽视了路线。特别是我有一个资源管理器,它在一个目录中显示一个文件夹列表,它有一个自定义的路径来获取主文件夹的内容,然后列出的每个文件夹都可以选择它的内容

我有一个删除文件夹的操作,当我尝试“删除”时,我得到一个页面,上面说目录不存在。如果我把默认路线放在上面,它就会工作。因此忽略自定义路由。这也会使资源管理器无法正常工作。因此,当默认路由位于顶部时,它会忽略其下方的内容。我真的不知道我错过了什么,但是也许其他人可以看到我没有的东西

这是我的路线图:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Explorer",
        url: "Explorer/{*path}",
        defaults: new { controller = "Explorer",
                        action = "Index",
                        path = UrlParameter.Optional }
        );

    routes.MapRoute(
        name: "DeleteFolders",
        url:  "Explorer/DeleteTreeItem/{*path}",
           new { controller = "Explorer", action = "DeleteTreeItem", path = UrlParameter.Optional }
        );

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
}
我也尝试过不使用“path=UrlParameter.Optional”,但似乎没有什么不同


谢谢你的帮助

尚未查看代码,但asp.net mvc中的路由100%取决于将它们添加到字典中的顺序。一旦mvc找到与传入请求匹配的路由,它将停止搜索。这不是一个最好的匹配,只是第一个满足约束条件的匹配。@Kolichikov谢谢你为我澄清这一点。我将删除路由放在浏览器路由之前,现在它似乎正在工作。我想这是因为这两个路由是相似的,但是它并没有破坏我对文件夹树的链接,因为它位于delete下。就像那样…很高兴它成功了!它可能试图将DeleteTreeItem作为path变量的条目,可选或不可选(因此,在您的例子中,它将Explorer/DeleteTreeItem视为Explorer,path=DeleteTreeItem。切换路由不会破坏任何仅仅是Explorer/{*path}的内容(除非{*path}将等于DeleteTreeItem,您应该避免)。