Blazor运行报UserManager<IdentityUser>服务未注册异常,已有方案无效
修复方案
错误核心为Identity服务注册的泛型参数与自定义用户类不匹配、类名拼写错误,共需修改2处Startup.cs代码:
- 修正
AddIdentity方法的泛型参数拼写错误:你定义的自定义用户类为AspNetUser,原代码中误写为AspNetUsers(多了末尾的s),修改后代码如下:
services.AddIdentity<AspNetUser, IdentityRole>(options => options.SignIn.RequireConfirmedAccount = true) .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders() .AddDefaultUI();
- 修正身份状态提供器的泛型参数:原代码中
RevalidatingIdentityAuthenticationStateProvider使用了默认的IdentityUser作为泛型参数,需替换为自定义的AspNetUser,修改后代码如下:
services.AddScoped<AuthenticationStateProvider, RevalidatingIdentityAuthenticationStateProvider<AspNetUser>>();
两处修改完成后,全链路Identity相关服务的泛型参数均与_LoginPartial.cshtml中注入的UserManager<AspNetUser>、SignInManager<AspNetUser>匹配,不会再请求默认IdentityUser对应的服务,报错即可解决。
内容的提问来源于stack exchange,提问作者Krzysztof Krysztofczyk
相关产品推荐
相关产品推荐

