为什么从ControllerBase vs Controller for ASP.NET Core Web API派生?

时间:2019-03-19 10:58:45

标签: c# asp.net asp.net-web-api asp.net-core

我正在按照本教程创建ASP.NET Core Web API,并且在添加控制器的部分中,该教程提供了替换控制器模板代码的代码。真正引起我注意的一件事是,在模板代码中,我得到了:

TodoController : Controller

然后在本应使用的教程代码中,我发现:

[Route("api/[controller]")]
[ApiController]
TodoController : ControllerBase

我非常想知道为什么对于Web API控制器,有必要从ControllerBase而不是Controller派生。为什么这样做?

2 个答案:

答案 0 :(得分:8)

  

对于Web API控制器,为什么必须从bar, baz, qux, quux而不是ControllerBase派生。

这不是严格必要的,仅此而已。 Controller类派生自Controller,仅添加了一些支持View的成员。

基本上:

ControllerBase

编写API时,ControllerBase可以更好地满足您的要求,但两者都可以使用。

答案 1 :(得分:7)

https://docs.microsoft.com/en-us/aspnet/core/web-api/?view=aspnetcore-3.1

不要通过从Controller类派生来创建Web API控制器。 Controller源自ControllerBase,并添加了对视图的支持,因此它用于处理网页,而不是Web API请求。