WebApi路由在区域中不起作用

Waq*_*qas 1 asp.net asp.net-mvc-routing asp.net-mvc-areas asp.net-web-api

我有一个应用程序,我已将我的管理面板移动到区域,从那时起我无法点击adminpanel api调用.这是主api注册和管理面板api注册的代码.

    //Api registration
    public static void Register(HttpConfiguration config)
    {

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );


        config.Routes.MapHttpRoute(
            name: "Secondary",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );


    //Area Registration
    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Admin_panel",
            "AdminPanel/{controller}/{action}/{id}",
            new { controller = "Admin", action = "Index", id = UrlParameter.Optional }
        );


        context.Routes.MapHttpRoute(
          "Admin_Secondary",
          "AdminPanel/api/{controller}/{id}",
          new { id = RouteParameter.Optional }
      );
    }
Run Code Online (Sandbox Code Playgroud)

我试图用URL localhost/taw/adminpanel/api/SearchAPI来打它但它不起作用.我的路由有什么问题?

Waq*_*qas 7

我发现问题,路线的优先顺序是造成问题,我想我应该在发布问题之前询问鸭子.

      context.Routes.MapHttpRoute(
       "Admin_Secondary",
       "AdminPanel/api/{controller}/{id}",
       new { id = RouteParameter.Optional }
      );
Run Code Online (Sandbox Code Playgroud)

必须来之前

    context.MapRoute(
        "Admin_panel",
        "AdminPanel/{controller}/{action}/{id}",
        new { controller = "Admin", action = "Index", id = UrlParameter.Optional }
    );
Run Code Online (Sandbox Code Playgroud)