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

.NET Core Web API依赖注入报错:无法解析IUserManagementService服务

.NET Core Web API依赖注入解析失败问题排查与解决

异常信息

System.InvalidOperationException: 尝试激活'Pwc.EMSWebapi.UserManagementController'时,无法解析类型为'Pwc.EMSWebapi.IUserManagementService'的服务。

调用栈

at lambda_method3(Closure, IServiceProvider, Object[]) 
at Microsoft.AspNetCore.Mvc.Controllers.ControllerFactoryProvider.<>c__DisplayClass6_0.<CreateControllerFactory>g__CreateController|0(ControllerContext controllerContext)

已尝试的服务注册方式

在Program.cs中尝试过以下几种注册方式:

  • 方式1:
    services.AddTransient<IUserManagementRepoitory, UserManagementRepoitory>();
    services.AddTransient<IUserManagementService, UserManagementService>();
    
  • 方式2:
    services.AddScoped<IUserManagementService, UserManagementService>();
    

补充代码

控制器构造函数

public UserManagementController(IUserManagementService userManagementService)
{
    this._userManagementService = userManagementService;
    //this.applicationUser = applicationUser;
    //this.user = user;
}

服务构造函数

public UserManagementService(IUserManagementRepository userManagementRepoitory)
{
    this._userManagementRepoitory = userManagementRepoitory;
}

仓储构造函数

public UserManagementRepoitory(EMSDbContext bcDbContext, IUser user)
{
    this.dbContext = bcDbContext;
    this.user = user;
}

解决步骤

  1. 修正仓储接口拼写错误
    注册代码中使用的接口名是IUserManagementRepoitory,但服务构造函数依赖的是IUserManagementRepository(末尾少了一个s),这是核心错误。修正注册代码中的接口名:

    services.AddTransient<IUserManagementRepository, UserManagementRepoitory>();
    services.AddTransient<IUserManagementService, UserManagementService>();
    
  2. 注册缺失的依赖项
    仓储类UserManagementRepoitory依赖EMSDbContext和IUser,必须在Program.cs中完成这两个服务的注册:

    • 注册数据库上下文EMSDbContext(以SQL Server为例):
      services.AddDbContext<EMSDbContext>(options => 
          options.UseSqlServer(Configuration.GetConnectionString("YourConnectionStringName")));
      
    • 注册IUser的具体实现类(假设实现类为User):
      services.AddTransient<IUser, User>();
      // 可根据业务需求替换为AddScoped或AddSingleton
      
  3. 验证依赖链完整性
    确保所有依赖项(IUser、EMSDbContext、IUserManagementRepository、IUserManagementService)都已正确注册,且接口与实现类的对应关系无误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 16:53:21