ASP.NET Core注入Identity服务时找不到ApplicationUser类型问题问询
解决方案
- 【补充视图命名空间引用】你的
ApplicationUser定义在WebApp1.Data命名空间下,当前登录分部视图没有引入该命名空间,两种处理方式:- 直接在分部视图顶部添加代码:
@using WebApp1.Data - 注入时直接写全限定类名:
@inject SignInManager<WebApp1.Data.ApplicationUser> SignInManager、@inject UserManager<WebApp1.Data.ApplicationUser> UserManager
- 直接在分部视图顶部添加代码:
- 【全局配置视图命名空间】如果希望所有Razor视图都能直接使用该类型,找到项目根目录下的
_ViewImports.cshtml文件,添加一行:@using WebApp1.Data;如果是Identity区域的视图识别失败,还要额外在Areas/Identity/Pages/_ViewImports.cshtml中也添加这行代码。 - 【检查上下文与Identity服务配置】
- 确认你的
ApplicationDbContext继承的是IdentityDbContext<ApplicationUser>而非默认的IdentityDbContext,示例代码:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser> { public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { } }- 确认Program.cs(.NET 6+)或Startup.cs(.NET 5及更早)中Identity服务注册时使用的是
ApplicationUser,示例配置:
builder.Services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true) .AddEntityFrameworkStores<ApplicationDbContext>(); - 确认你的
- 【清理缓存重新生成】完成上述配置后,右键解决方案选择「清理」,删除项目下的bin、obj文件夹,再重新生成项目,避免Razor视图缓存导致类型识别异常。
内容的提问来源于stack exchange,提问作者Glenn Coyle
相关产品推荐
相关产品推荐

