Asp.net mvc ASP MVC定制路由

Asp.net mvc ASP MVC定制路由,asp.net-mvc,Asp.net Mvc,我有几个自定义路由,使我的应用程序在控制器之前设置用户的用户名。我还想在用户名后显示一些控制器: 例如: localhost:44303/johndoe //it should show profile > index localhost:44303/johndoe/Profile localhost:44303/johndoe/Profile/Index localhost:44303/johndoe/Profile/Setting localhost:44303/johndoe/Act

我有几个自定义路由,使我的应用程序在控制器之前设置用户的用户名。我还想在用户名后显示一些控制器:

例如:

localhost:44303/johndoe //it should show profile > index
localhost:44303/johndoe/Profile
localhost:44303/johndoe/Profile/Index
localhost:44303/johndoe/Profile/Setting
localhost:44303/johndoe/Activity
localhost:44303/johndoe/Activity/Index
localhost:44303/johndoe/Activity/Setting
这是我的路线配置:

        routes.MapRoute(
            name: "profile",
            url: "{name}/profile/{action}",
            defaults: new { controller = "profile", action = "Index" }
        );

        routes.MapRoute(
            name: "Activity",
            url: "{name}/Activity/{action}",
            defaults: new { controller = "Activity", action = "Index" }
        );

  /*********** PROJECT OTHER ROUTE****************/

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

        routes.MapRoute(
           name: "Default1",
           url: "{controller}/{action}/{parametr1}/{parametr2}/{parametr3}",
           defaults: new { controller = "Home", action = "Index", parametr1 = "1", parametr2 = UrlParameter.Optional, parametr3 = UrlParameter.Optional }
       );
在这种情况下,除此之外,所有url都正常工作: 本地主机:44303/约翰多

我得到
无法找到资源。
错误

我添加了以下路径,但在其他路径中出现了新问题,如
localhost:44303

        routes.MapRoute(
            name: "username",
            url: "{name}",
            defaults: new { controller = "Profile", action = "Index", }
        );

我怎样才能解决这个问题?我的主要问题是一些url,比如
localhost:44303/johndoe

它应该通过默认路径。如果您想让它转到配置文件/索引,请将默认设置为这样

任何与
用户名
路由匹配的URL也将与
默认
路由匹配。当您将
用户名
路由放在
默认
路由之后时,它的优先级较低,因此永远不会匹配。我这样做了,但我仍然有相同的问题