Ich arbeite an einem Projekt, das ein Asp.net-Core-Web-API-Projekt ist. Die meisten meiner Projekte habe ich mit Asp.net MVC und Core MVC durchgeführt, aber ich würde ein neues Projekt basierend auf der Core-Web-API erstellen. In Core MVC haben wir Areas-Konzept, mit dem wir Areas für den Admin-Teil usw. erstellen können. Aber ich möchte wissen, ob wir Areas in Asp.net-Core-Web-API-Projekten verwenden können? Wenn ja, wie kann ich es tun? Wenn Sie darüber nachdenken, dass es einen besseren Weg gibt, sagen Sie es mir bitte.
Sie können Ihre API-Controller in einem Bereich platzieren, um sie einfach zu gruppieren. Aber im Grunde geben Sie die Route auf dem Controller vor, sodass Sie selbst verschiedene Routen erstellen können:
[Route("api/myarea/v1/[controller]")]
Ich habe das gleiche Problem, das ich versucht habe, indem ich meinen ApiController unter meinen Bereich gelegt habe, damit die Struktur wie unten aussieht
Hier ist der API-Controller drin
Bereiche/GL/Controller
[Area("GL")]
[Route("api/[controller]")]
[ApiController]
[HttpGet]
public IActionResult Get()
{
return Ok("api controller");
}
Aber wenn ich auf meine URL zugreife
http://localhost :48357/GL/Api/Get
Oder
http://localhost :48357/Api/GL/Get
oder
http://localhost :48357/Api/Get
Ich bekomme
Statuscode: 404; Nicht gefunden
Hier ist der Code drin
Startup.cs
routes.MapAreaRoute(
name: "AreaGL",
areaName: "GL",
template: "GL/{controller=Home}/{action=Index}/{id?}"
);
Bitte helfen Sie mir bei diesem Problem, was mache ich hier falsch?
Danke, dass Sie uns kontaktiert haben, @farhadibehnam.
Damit sich die Controller in Bereichen befinden, müssen Sie die {area:exists}
-Routenbeschränkung in Ihrer Attributroute anwenden, wie unter https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/areas? beschrieben.
Hilfreichster Kommentar
Sie können Ihre API-Controller in einem Bereich platzieren, um sie einfach zu gruppieren. Aber im Grunde geben Sie die Route auf dem Controller vor, sodass Sie selbst verschiedene Routen erstellen können:
[Route("api/myarea/v1/[controller]")]