.NET Core 6 Identity注入异常:UserManager实例为空,求问题定位
禁止手动实例化AccountService:如果在控制器或其他地方直接
new AccountService(),DI容器不会介入,自然不会注入UserManager<ApplicationUser>。必须通过构造函数注入AccountService,让DI容器负责创建其实例。检查Identity服务配置完整性:在Infrastructure层的
ServiceRegistration配置Identity时,必须调用AddEntityFrameworkStores<IdentityContext>(),否则UserManager无法绑定到EF存储实现,DI容器无法正确解析该服务。示例配置:services.AddIdentity<ApplicationUser, IdentityRole>() .AddEntityFrameworkStores<IdentityContext>() .AddDefaultTokenProviders();确认服务注册顺序:必须先注册Identity相关服务(
AddIdentity、AddEntityFrameworkStores等),再注册依赖这些服务的AccountService。如果先注册AccountService,DI容器在解析它时还未注册UserManager,会导致注入失败。检查AccountService构造函数访问权限:确保
AccountService的构造函数是public修饰的,DI容器只能创建public构造函数的类实例,非public构造函数会导致无法注入依赖。验证Program.cs中是否引入基础设施服务:确认在WebApi的
Program.cs中调用了Infrastructure层的服务注册扩展方法,比如builder.Services.AddInfrastructureIdentity(builder.Configuration);,否则Infrastructure层的所有配置都不会生效,DI容器中不存在UserManager和AccountService的注册项。
内容的提问来源于stack exchange,提问作者yozawiratama

