Aspnetcore: 我可以在 Asp.net 核心 Web API 项目中使用区域吗?

创建于 2019-01-19  ·  3评论  ·  资料来源: dotnet/aspnetcore

我正在开发一个 Asp.net 核心 Web API 项目。我的大部分项目都是由 Asp.net MVC 和 Core MVC 完成的,但我会做一个基于 Core Web API 的新项目。 在核心 MVC 中,我们有区域概念,我们可以为管理部分创建区域等。但我想知道我们可以在 Asp.net 核心 Web API 项目中使用区域吗? 如果是,我该怎么做? 如果您正在考虑有更好的方法,请告诉我。

area-mvc

最有用的评论

你可以将你的 API 控制器放在一个区域中,只是为了对它们进行分组。 但基本上你在控制器上提供路由,所以你可以自己创建不同的路由:
[Route("api/myarea/v1/[controller]")]

所有3条评论

你可以将你的 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。

此页面是否有帮助?
0 / 5 - 0 等级