我正在开发一个小型 ASP.NET Core MVC 应用程序,用于管理学校数据库中的课程。该项目使用 ASP.NET Core MVC、MySQL 和 Entity Framework Core 作为后端。
该应用程序有两个控制器:
CourseAPIController – 处理课程 CRUD 操作的 API 控制器。 CoursePageController – 一个 MVC 控制器,使用 CourseAPIController 来获取或操作前端视图的数据。 这是我的 CoursePageController 的简化版本:
public class CoursePageController : Controller
{
private readonly CourseAPIController _api;
public CoursePageController(CourseAPIController api)
{
_api = api;
}
public IActionResult List(string SearchKey = null)
{
var courses = _api.ListCourses(SearchKey);
return View(courses);
}
}
当我运行应用程序时,出现以下错误:
InvalidOperationException:尝试激活“Cumulative_assignment.Controllers.CoursePageController”时无法解析类型“Cumulative_assignment.Models.CourseAPIController”的服务。
我知道这与依赖注入有关,但我不确定如何针对这种情况正确设置它。
检查 CoursePageController 中的构造函数注入是否导致问题。 将 CourseAPIController 方法设为静态(但我更愿意坚持使用 DI 以使其可扩展)。
默认情况下,控制器未在 DI 容器中注册。通常你不应该在那里注册它们,如果你有一些想要在控制器之间共享的通用逻辑,那么将其移动到某个单独的类中(并在 DI 中注册并在两个控制器中解析)。
AddControllersAsServices
在 DI 容器中注册控制器:
builder.Services
.AddControllers()
.AddControllersAsServices();