Как использовать веб-API с одинаковыми именами областей и контроллеров в другой области? - PullRequest
0 голосов
/ 01 июня 2018

Следующая ошибка, с которой я столкнулся:

Обнаружено несколько типов, соответствующих контроллеру с именем 'test'.Это может произойти, если маршрут, обслуживающий этот запрос ('JIB / api / {controller} / {action}'), обнаружил несколько контроллеров, определенных с одним и тем же именем, но с разными пространствами имен, что не поддерживается.Запрос на «тест» обнаружил следующие подходящие контроллеры: WebApplication2.Areas.JIB.Controllers.TestController WebApplication2.Areas.JCB.Controllers.TestController System.InvalidOperationException в System.Web.Http.Dispatcher.DefaultHttpControlessControllerPortorSeclerlerSelector.в System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext ()

 [Route("JIB/api/Test/test")]
        [HttpGet]
        public IHttpActionResult Test()
        {
            return Ok("JIBs");
        }
--------------
 [Route("JCB/api/Test/test")]
        [HttpGet]
        public IHttpActionResult Test()
        {
            return Ok("JCB");
        }
---------------
Global.asax


 public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapMvcAttributeRoutes();
            routes.MapRoute(
                "Default",                                              // Route name
                "{controller}/{action}/{id}",                           // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional }  // Parameter defaults
            );
        }
        protected void Application_Start()
        {
            JCBAreaRegistration.RegisterAllAreas();
            // GlobalConfiguration.Configure(WebApiConfig.Register);
            RegisterRoutes(RouteTable.Routes);

        }

JCBAreaReges context.Routes.MapHttpRoute (имя: "JCBApiAction", routeTemplate / "JB")/ {controller} / {action} ");

        context.Routes.MapHttpRoute(
                name: "JCBApi",
                routeTemplate: "JCB/api/{controller}"
            );

        //****************=======Default Route=========*******************
        context.MapRoute(
            "JCB_dashboard",
            "JCB/{controller}/{action}/{id}",
            new { Controller = "Dashboard", action = "Index", id = UrlParameter.Optional }
        );



        context.MapRoute(
            "JCB_default",
            "JCB/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }
        );

JIBAreaReges context.Routes.MapHttpRoute (имя:" JIBApiAction ", routeTemplate:" JIB / api / {controller} / {action}");

        context.Routes.MapHttpRoute(
                name: "JIBApi",
                routeTemplate: "JIB/api/{controller}"
            );

        //****************=======Default Route=========*******************
        context.MapRoute(
            "JIB_dashboard",
            "JIB/{controller}/{action}/{id}",
            new { Controller = "Dashboard", action = "Index", id = UrlParameter.Optional }
        );
        context.MapRoute(
            "JIB_default",
            "JIB/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }
        );
...