使用Microsoft.AspNetCore.Identity.EntityFrameworkCore 6.0.9时SignInManager无法使用的问题
问题解决:无法使用SignInManager的原因及修复方案
核心原因
SignInManager<TUser>类定义在Microsoft.AspNetCore.Identity NuGet包中,你安装的Microsoft.AspNetCore.Identity.EntityFrameworkCore是基于前者的EF Core存储实现包——虽然它会依赖前者,但部分场景下(如包缓存异常、版本匹配问题)可能导致Microsoft.AspNetCore.Identity未被正确引用,从而出现找不到SignInManager的提示。
修复步骤
- 安装对应版本的
Microsoft.AspNetCore.Identity包:在NuGet包管理器中搜索并安装6.0.9版本的Microsoft.AspNetCore.Identity,确保和你使用的EntityFrameworkCore包版本完全一致。 - 显式注册SignInManager服务:在Program.cs的服务配置中,添加
AddSignInManager方法确保服务被正确注册:builder.Services.AddIdentity<AppUser, AppRole>() .AddEntityFrameworkStores<AppDbContext>() .AddSignInManager<SignInManager<AppUser>>(); - 验证注入方式:在需要使用
SignInManager的类(如控制器)中,确保正确构造注入:private readonly SignInManager<AppUser> _signInManager; public HomeController(SignInManager<AppUser> signInManager) { _signInManager = signInManager; }
内容的提问来源于stack exchange,提问作者Berk KARASU
相关产品推荐
相关产品推荐

