我正在开发一个 Asp.net 核心 Web API 项目。我的大部分项目都是由 Asp.net MVC 和 Core MVC 完成的,但我会做一个基于 Core Web API 的新项目。 在核心 MVC 中,我们有区域概念,我们可以为管理部分创建区域等。但我想知道我们可以在 Asp.net 核心 Web API 项目中使用区域吗? 如果是,我该怎么做? 如果您正在考虑有更好的方法,请告诉我。
你可以将你的 API 控制器放在一个区域中,只是为了对它们进行分组。 但基本上你在控制器上提供路由,所以你可以自己创建不同的路由:
[Route("api/myarea/v1/[controller]")]
我有同样的问题,我尝试将我的 ApiController 放在我的区域下,所以结构如下所示
这是里面的Api控制器
区域/总帐/控制器
[Area("GL")]
[Route("api/[controller]")]
[ApiController]
[HttpGet]
public IActionResult Get()
{
return Ok("api controller");
}
但是当我访问我的 URL
http://localhost :48357/GL/Api/Get
或者
http://localhost :48357/Api/GL/Get
或者
http://localhost :48357/Api/Get
我明白了
状态码:404; 未找到
这是代码
启动.cs
routes.MapAreaRoute(
name: "AreaGL",
areaName: "GL",
template: "GL/{controller=Home}/{action=Index}/{id?}"
);
请帮助我解决这个问题,我在这里做错了什么?
感谢您与我们联系,@farhadibehnam。
对于要在区域中的控制器,您必须在属性路由中应用{area:exists}
路由约束,如https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/areas?视图=aspnetcore-2.2。
最有用的评论
你可以将你的 API 控制器放在一个区域中,只是为了对它们进行分组。 但基本上你在控制器上提供路由,所以你可以自己创建不同的路由:
[Route("api/myarea/v1/[controller]")]