Is it true that "ApiController
will get deprecated in .NET Core"? Asking since I'm planning to use it in new projects.
Update ASP.NET Core 2.1
Since ASP.NET Core 2.1 a new set of types is available to create Web API controllers. You can annotate your controllers with the [ApiController]
attribute which enables a few new features such as automatic model state validation and binding source parameter inference. See the docs for more information:
https://docs.microsoft.com/en-us/aspnet/core/web-api/index?view=aspnetcore-2.1#annotate-class-with-apicontrollerattribute.
There is indeed no particular ApiController
class anymore since MVC and WebAPI have been merged in ASP.NET Core. However, the Controller
class of MVC brings in a bunch of features you probably won't need when developing just a Web API, such as a views and model binding.
You've got two options if you want something different:
Use the ControllerBase
class in the Microsoft.AspNetCore.Mvc.Core package.
Or
Create your ApiController
base class. The key here is to add the [ActionContext]
attribute which injects the current ActionContext
instance into the property:
[Controller]
public abstract class ApiController
{
[ActionContext]
public ActionContext ActionContext { get; set; }
}
Also, add the [Controller]
attribute to the class to mark it as a controller for the MVC controller discovery.
See more details in my “Web API in MVC 6” blogpost.