.NET 7应用DI无法解析AccountService服务问题排查
.NET 7 DI服务解析失败排查
问题分析
错误信息明确显示:激活AccountsController时无法解析Contoso.API.Services.AccountService类型的服务。结合你提供的注册代码来看,你在DI容器中仅注册了接口IAccountService到实现类AccountService的映射,但错误提示说明控制器正在尝试直接依赖AccountService类,而非你注册的接口。
虽然你贴出的AccountsController代码里注入的是IAccountService,但实际运行的代码大概率存在不一致——要么是代码未保存,要么是存在其他版本的控制器类。
解决方案
方案1:修正控制器依赖(推荐,符合依赖倒置原则)
检查并确保AccountsController的构造函数注入的是IAccountService接口,而非AccountService类:
public class AccountsController : ControllerBase { private readonly IAccountService _accountService; // 正确写法:注入接口 public AccountsController(IAccountService accountService) { _accountService = accountService; } // ... 其他业务代码 }
方案2:直接注册实现类(不推荐)
如果业务场景确实需要直接依赖AccountService类,需在DI容器中单独注册该类:
// 在Program.cs中添加以下注册代码 builder.Services.AddScoped<AccountService>();
内容的提问来源于stack exchange,提问作者user3191574
相关产品推荐
相关产品推荐

