MVC区域中的API路由

问题描述 投票:0回答:1

我在ASP.Net MVC的Area中有关于路由API的问题。我为(Admin,Guest,SuperAdmin)添加了许多区域,我想为每个用户添加API,但是我无法访问API。

 // added this code in Admin Area
        public override void RegisterArea(AreaRegistrationContext context) 
        {
            context.MapRoute(
                "Admin_default",
                "Admin/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional }
            );
        }




// added this code in SuperAdmin Area
   public override void RegisterArea(AreaRegistrationContext context) 
        {
        context.MapRoute(
                "SuperAdmin_default",
                "SuperAdmin/{controller}/{action}/{id}",
                );
        }

}

但是我想使用代码作为API,所以添加

公共静态类WebApiConfig{公共静态无效寄存器(HttpConfiguration配置){config.MapHttpAttributeRoutes();

        config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));

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

        config.Routes.MapHttpRoute(
            "CustomApi",
            "api/{controller}/{action}/{id}",
            new { id = RouteParameter.Optional }
        );


        config.Routes.MapHttpRoute("SuperAdminDefaultApiGet", "Api/superadmin/{controller}", new { action = "Get" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) });


        config.Routes.MapHttpRoute("DefaultApiGet", "Api/{controller}", new { action = "Get" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) });
        config.Routes.MapHttpRoute("DefaultApiPost", "Api/{controller}", new { action = "Post" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Post) });
    }
    }

我在SuperAdmin中添加两个具有相同名称的Controller,>]

[RoutePrefix("api/superAdmin/users")]
    public class SuperAdminController : ApiController
    {
        [Route("getUser")]
        [AllowAnonymous]
        public HttpResponseMessage getUser()
        {
        // code
        }
    }






[RoutePrefix("api/admin/users")]
public class AdminController : ApiController
{
    [Route("getUser")]
    [AllowAnonymous]
    public HttpResponseMessage getUser()
    {
    // code
    }
}

[谁能帮我解决路由问题,或提供有关Area MVC中路由API的文章为我提供支持

我在ASP.Net MVC的Area中有关于路由API的问题。我为(Admin,Guest,SuperAdmin)添加了许多区域,我想为每个用户添加API,但是我无法访问API。 //在管理区域中添加了此代码...

asp.net-mvc api area
1个回答
0
投票

在注册任何api路由之前,在顶部的webapi.config中添加此代码

© www.soinside.com 2019 - 2024. All rights reserved.