2015-01-29 3 views
1

У меня есть две области Admin и SecurityGuard. Маршрутизация показана ниже. Отображает ошибку: System.ArgumentException: маршрут с именем «Admin_default» уже находится в семейном маршруте. Имена должны быть уникальными маршрутами. Имя параметра: имяRegisterRoutes в ASP.NET MVC 4

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


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

      AreaRegistration.RegisterAllAreas(); 

     } 

Global.asax: 
    protected void Application_Start() 
     { 
      AreaRegistration.RegisterAllAreas(); 

      WebApiConfig.Register(GlobalConfiguration.Configuration); 
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
      RouteConfig.RegisterRoutes(RouteTable.Routes); 
      BundleConfig.RegisterBundles(BundleTable.Bundles); 
      AuthConfig.RegisterAuth(); 
     } 

AdminAreaRegistration: 
     public override void RegisterArea(AreaRegistrationContext context) 
     { 
      context.MapRoute(
       "Admin_default", 
       "Admin/{controller}/{action}/{id}", 
       new { action = "Index", id = UrlParameter.Optional }, 
        new { controller = "Slider|Product" }, 
       namespaces: new[] { "CaterWebsite.Areas.Admin.Controllers" } 
      ); 

     } 

SecurityGuardAreaRegistration: 
    public override void RegisterArea(AreaRegistrationContext context) 
     { 

      context.MapRoute("SearchMembership", "SecurityGuard/Membership/index/{searchterm}/{filterby}", 
       new { controller = "Membership", action = "Index", searchterm = UrlParameter.Optional, filterby = "all" } 
       ); 

      context.MapRoute("Membership", "SecurityGuard/Membership/{action}/{userName}", 
       new { controller = "Membership", userName = UrlParameter.Optional } 
       ); 

      context.MapRoute(
       "SecurityGuard_default", 
       "SecurityGuard/{controller}/{action}/{id}", 
       new { controller = "Dashboard", action = "Index", id = UrlParameter.Optional } 
      ); 
     } 

ответ

0

Удалить AreaRegistration.RegisterAllAreas(); из метода RegisterRoutes. Вы называете это дважды.

Вы указали его в нужном месте в своем методе Application_Start.