Ist ApiController in .NET Core veraltet?
Ist es wahr, dass "ApiController
erhalten veraltet .NET Core"? Ich brauche wirklich professionellen Einblick auf diese. Da ich Plane, es zu benutzen, in neue Projekte.
InformationsquelleAutor der Frage Viji | 2016-07-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update ASP.NET Core 2.1
Da ASP.NET Core 2.1 eine Reihe neuer Arten ist verfügbar, die das erstellen von Web-API-Controller. Sie können Anmerkungen in Ihren Controller mit den
[ApiController]
Attribut die es ermöglicht ein paar neue features wie die automatische Modell-state-Validierung und-Bindung source-parameter-Inferenz. Siehe die Dokumentation für mehr Informationen:https://docs.microsoft.com/en-us/aspnet/core/web-api/index?view=aspnetcore-2.1#annotate-class-with-apicontrollerattribute.
Es ist in der Tat keine besonderen
ApiController
Klasse mehr, da MVC und WebAPI wurden zusammengeführt ASP.NET Core. Jedoch, dieController
Klasse von MVC bringt eine Reihe von Funktionen, die Sie wahrscheinlich nicht brauchen, wenn die Entwicklung nur ein Web-API, wie ein Blick auf und das Modell verbindlich.Du hast zwei Möglichkeiten, wenn Sie etwas anderes wollen:
Verwenden Sie die
ControllerBase
Klasse in der Microsoft.AspNetCore.Mvc.Kern Paket.Oder
Erstellen Sie Ihre
ApiController
Basisklasse. Der Schlüssel hier ist, die[ActionContext]
Attribut injiziert aktuellenActionContext
- Instanz in der Eigenschaft:Außerdem fügen
[Controller]
Attribut der Klasse zu markieren es als controller für die MVC-controller Entdeckung.Sehen Sie mehr details in meinem "Web API, MVC 6" Beitrag.
InformationsquelleAutor der Antwort Henk Mollema
In ASP.NET core verwendet Begriffe und Konzepte bekannt aus ASP.NET MVC und ASP.NET WepAPI. Aber im Grunde ist es ein komplett neuer Rahmen. Daher gibt es mehrere Konzepte oder Basisklassen, können wir einfach vergessen.
ASP.NET MVC und ASP.NET WebApi sind zwei nebeneinander, aber unterschiedliche Rahmenbedingungen und daher eine Abgrenzung getroffen werden muss, festlegen eines Controllers als WebApi Controller mithilfe der
ApiController
als Basisklasse.In ASP.NET Core, das ist einfach nicht mehr notwendig. Die
Controller
Basisklasse verwendet werden kann für Handlungen, die Rückkehr HTML von Razor-Ansichten oder JSON (mit Ausgabe-Formatierer XML und andere Formate sind auch möglich). Sie brauchen noch nicht einmal denController
Basisklasse. Es ist sogar möglich, einen "Plain Old C# - Objekt" Controller ohne inheritence.Dies ist ein Beispiel von einer Demo-Controller, um zu skizzieren, dass, obwohl die ApiController ist nicht da, der strukturelle Ansatz zum übermitteln von Daten an den client ist es ähnlich.
InformationsquelleAutor der Antwort Ralf Bönning
Den
[ApiController]
Attribut habe tatsächlich wieder in Hinzugefügt ASP.NET der Core-version 2.1.Features, gepaart mit dem Attribut sind:
[FromBody]
[FromRoute]
... Attribute, die explizitLinks zu den docs:
Update
Gibt es auch die baseclass
ControllerBase
für Controller Erben, die sich für api-Controller, weil es ommits alle view-Funktionen.InformationsquelleAutor der Antwort Riscie
Wie andere erwähnt haben, ASP.NET Kern ist eine komplett neue webstack ist nicht kompatibel mit der alten ASP.NET MVC-webstack. Dies ist explizit reflektiert in seinem Namen und Versionierung!
ASP.NET Kern-und ASP.NET Kern MVC haben die version 1.0.0 zu machen das Problem sehr deutlich.
ASP.NET Kern zusammengeführt werden, ist der MVC und WebApi in einer einzigen Api hat gerade angerufen.
Und hier ist die Sache, die Sie vielleicht gesucht haben:
Wenn Sie eine Migration von einer früheren ASP.NET MVC oder ASP.NET WebApi-Anwendung können Sie importieren wollen
Microsoft.AspNetCore.Mvc.WebApiCompatShim
- Paket, welches einige Kompatibilität-Typen, die die macht Migrationen einfacher, von den früheren Versionen. Unter Ihnen ist derApiController
Klasse und bestimmte Attribute, die entfernt wurden, in die neue webstack Api.Bitte beachten Sie jedoch, dass dies nur dort, um Ihnen helfen, die Migration von bestehenden Anwendungen. Wenn Sie eine neue Anwendung erstellen, sollten Sie nicht verwenden diese Kompatibilität shim und verwenden nur die neuen Sachen.
InformationsquelleAutor der Antwort Tseng