当我尝试在 .NET Core 中添加新的 ApiController 时出现 NullReferenceException

NullReferenceException when I try to add a new ApiController in .NET Core

我看到这条错误消息:

当我尝试按照以下步骤搭建控制器并清空 API 控制器时:

Right-click on folder

> Add

> Controller...

> Add Scaffold -> API Controller - Empty

> Click Add

规格:

---编辑---

我现在无法重现问题。 @chriss-pratt 给出的其中一个建议一定奏效了(谢谢!)在做教程时,我遇到了 add scaffold tooling and perform initial migration 的部分。如果您遇到这种情况并且以下内容不起作用,我希望教程的这一部分(如果您决定坚持使用脚手架)。

ASP.NET 核心严格来说没有 ApiController class。 ASP.NET Core 没有单独的 MVC 和 Web Api 组件。一切都只是ControllerApiController 可通过单独的 "shim" NuGet 程序包获得,但这只是为了让迁移旧的 ASP.NET Web Api 代码更容易。您不应该将它用于任何新开发。

就是说,您在这里遇到的问题与脚手架有关。这可能是因为您正在尝试构建 ApiController 而不仅仅是 Controller。您没有提供有关您使用的 Visual Studio 版本或 ASP.NET Core 版本的任何信息。

尝试简单的操作,例如关闭和重新启动 Visual Studio。如果仍然存在,您可以尝试修复 Visual Studio。按 windows 键并开始输入 "Visual Studio Installer"。当它出现时打开它。在列表中安装的 Visual Studio 副本下方,将有一个下拉菜单,看起来像三个点堆叠在一起。 "Repair" 那里有一个选项。开始这个过程,然后去喝杯咖啡。它实际上是重新安装 Visual Studio,因此可能需要一段时间。

综上所述,老实说,您最好的选择就是不要担心。无论如何,脚手架几乎是无用的。特别是 ASP.NET 核心,你得到的只是一个 class,你可以轻松地自己创建。控制器只是一个继承自 Controller 的 class。在您的 Controllers 目录中添加一个新的 class,将其命名为 WhateverController,然后在代码中的名称后添加 : Controller。然后,开始添加您的操作,例如正常操作。