You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core依赖注入报错:AggregateException服务无法构造

问题分析与修复方案

问题根源

报错明确指出:尝试激活UserService时无法解析Password类型的服务。原因是你在DI容器中仅注册了IPassword接口与Password实现类的映射,但UserService的构造函数依赖的是Password具体类,而非IPassword接口,容器找不到该具体类的注册信息。

修复方案(推荐,符合依赖倒置原则)

修改UserService的构造函数,将依赖从具体类Password改为接口IPassword,保持现有DI注册不变即可:

// UserService类修改后的代码片段
public class UserService : IUserService
{
    private readonly ApiContext _context;
    private readonly IPassword _password; // 改为IPassword接口类型

    // 构造函数参数改为IPassword
    public UserService(ApiContext context, IPassword password)
    {
        _context = context;
        _password = password;

        if (_context.Users == null)
            throw new Exception();
    }

    // 其余业务方法无需修改
}

备选方案(不推荐,耦合具体类)

如果坚持依赖Password具体类,在DI配置中添加该类的注册:

// Builder类的服务注册部分新增一行
builder.Services.AddScoped<IUserService, UserService>();
builder.Services.AddScoped<IPassword, Password>();
builder.Services.AddScoped<Password>(); // 新增:注册Password具体类

方案说明

依赖接口而非具体类是依赖注入的核心原则(依赖倒置),能降低代码耦合,方便后续替换IPassword的实现类(比如测试时用模拟实现),让代码更具扩展性。

内容的提问来源于stack exchange,提问作者Midorikawa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 19:45:18