【发布时间】:2020-04-05 10:06:07
【问题描述】:
我在 ASP.Net MVC 的区域中遇到路由 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,所以添加
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
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 和 Admin 中添加了两个具有相同名称的控制器
[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 api area