Я работаю над проектом, который является основным проектом веб-API Asp.net. Большинство моих проектов я сделал с помощью Asp.net MVC и Core MVC, но я бы сделал новый проект на основе Core Web API. в Core MVC у нас есть концепция областей, в которой мы можем создать области для административной части и т. д. Но я хочу знать, можем ли мы использовать области в основных проектах веб-API Asp.net? Если да, то как я могу это сделать? Если вы думаете о том, что есть лучший способ, скажите мне, пожалуйста.
Вы можете разместить свои контроллеры API в области, просто чтобы сгруппировать их. Но в основном вы предоставляете маршрут на контроллере, поэтому вы можете сами создавать разные маршруты:
[Route("api/myarea/v1/[controller]")]
У меня та же проблема, которую я пробовал, поместив свой ApiController в свою область, чтобы структура выглядела так, как показано ниже.
Вот контроллер Api внутри
Области/GL/Контроллеры
[Area("GL")]
[Route("api/[controller]")]
[ApiController]
[HttpGet]
public IActionResult Get()
{
return Ok("api controller");
}
Но когда я получаю доступ к своему URL
http:// локальный: 48357/GL/Api/получить
Или
http:// локальный: 48357/Api/GL/Получить
или
http:// локальный: 48357/Api/получить
я получил
Код состояния: 404; не обнаружена
Вот код в
Startup.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]")]