Dnn 依赖注入 - 尝试创建控制器时发生错误...确保控制器具有无参数 public 构造函数

Dnn Dependency Injection - error occurred when trying to create a controller... make sure the controller has a parameterless public constructor

我有一个 Web API 的 Dnn 模块项目。在启动时我想为这个模块配置依赖注入。

我得到的错误是:“尝试创建 'SchoolsController' 类型的控制器时发生错误。确保控制器具有无参数 public 构造函数。”

内部异常在实际问题上更清楚一些:“尝试激活 'MyProj.Persistence.UnitOfWork.UnitOfWork' 时无法解析类型 'MyProj.Persistence.Context.PortfolioContext' 的服务”。

我猜这是因为我的 UnitOfWork class 构造函数需要 DbContext?

我的工作单元 class 看起来像这样:

public class UnitOfWork: IUnitOfWork, IDisposable
{
    private readonly PortfolioContext context;

    public UnitOfWork(PortfolioContext context)
    {
        this.context = context;
        Schools = new SchoolRepository(context);
        Users = new UserRepository(context);
    }
}

我的控制器是这样的:

public class SchoolsController: BaseController
{
    private readonly IUnitOfWork unitOfWork;

    public SchoolsController(IUnitOfWork unitOfWork)
    {
        this.unitOfWork  = unitOfWork;
    }
} 

我的创业公司class:

public class Startup : IDnnStartup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddScoped<IUnitOfWork, UnitOfWork>();
    }
}

我试过在像这样添加范围化的 UnitOfWork 之前添加 DbContext,但没有成功:

services.AddSingleton<DbContext, PortfolioContext>((ctx) =>
{
    return new PortfolioContext();
});

知道如何在 Dnn 中执行此操作吗?通常我会通过做这样的事情来添加 DBContext:

services.AddDbContext<DataContext>(x => x.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));  

但出于某种原因,我无法在此上下文(Dnn、IDnnStartup 等)中的任何位置找到扩展方法 AddDbContext

编辑:
忘记补充说这是针对 .net 4.7.2

的 Dnn 9.6.2

原来我离得不远。

我最初尝试的地方:

services.AddSingleton<DbContext, PortfolioContext>((ctx) =>
{
    return new PortfolioContext();
});

实际上应该是这样的:

services.AddSingleton<PortfolioContext>((ctx) =>
{
    return new PortfolioContext();
});