NET 核心使用 ASP.NET MVC 和 ASP.NET WepAPI 中的术语和概念。但基本上它是一个全新的框架。因此,我们可以简单地忘记几个概念或基类。
NET MVC 和 ASP.NET WebApi 是两个并存但不同的框架,因此必须明确使用 ApiController作为基类将控制器指定为 WebApi 控制器。
在 ASP.NET Core 中,这已经没有必要了。Controller基类可用于从 Razor View 或 JSON 返回 HTML 的操作(也可以使用 XML 和其他格式的输出格式化器)。你甚至不需要 Controller基类。甚至可以使用“普通的旧 C # 对象”作为没有继承的 Controller。
public class DemoController : Controller
{
public async Task<IActionResult> Action()
{
var model = await _someService.GetPreciousData();
return Ok(model);
}
}
正如其他人提到的,ASP.NET Core 是一个全新的网络栈,与旧的 ASP.NET MVC 网络栈不兼容。这显式地反映在它的名称和版本控制中!
NET Core 和 ASP.NET Core MVC 的1.0.0版本非常清楚地表明了这种不兼容性。
NET 内核将 MVC 和 WebApi 合并为一个刚刚调用的 API。
这就是你可能一直在找的东西:
如果 从以前的 ASP.NET MVC 或 ASP.NET WebApi 应用程序迁移,您可能需要导入 Microsoft.AspNetCore.Mvc.WebApiCompatShim包,它提供了一些兼容性类型,使得从以前的版本迁移更容易。其中包括 ApiController类和在新的 webstack Api 中删除的某些属性。