InvalidOperationException:激活“CoursePageController”时无法解析类型“CourseAPIController”的服务

问题描述 投票:0回答:1

我正在开发一个小型 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 以使其可扩展)。

c# api controller backend
1个回答
0
投票

默认情况下,控制器未在 DI 容器中注册。通常你不应该在那里注册它们,如果你有一些想要在控制器之间共享的通用逻辑,那么将其移动到某个单独的类中(并在 DI 中注册并在两个控制器中解析)。

但为了完整性(并作为代码的快速修复),您可以使用

AddControllersAsServices
在 DI 容器中注册控制器:

builder.Services
    .AddControllers()
    .AddControllersAsServices();
© www.soinside.com 2019 - 2024. All rights reserved.