Aspnetcore: Kann ich Areas in Asp.net-Core-Web-API-Projekten verwenden?

Erstellt am 19. Jan. 2019  ·  3Kommentare  ·  Quelle: dotnet/aspnetcore

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.

area-mvc

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]")]

Alle 3 Kommentare

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.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen