You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET 6中UserManager服务无法获取求助:角色正常用户异常

问题排查与解决方案

核心错误原因

  1. 类型不匹配:你在Startup中注册的是针对BOAPUser的Identity服务,但报错代码中尝试获取的是UserManager<IdentityUser>,DI容器中不存在该类型的服务实例。
  2. DbContext冗余配置:ApplicationDbContext继承自IdentityDbContext<BOAPUser>,该基类已经包含用户相关的DbSet,无需额外定义DbSet<IdentityUser> BOAPUser,这会导致实体类型冲突。

具体修复步骤

1. 修正ApplicationDbContext代码

移除冗余的DbSet<IdentityUser>定义,修改后代码:

public class ApplicationDbContext : IdentityDbContext<BOAPUser>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options) {}

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
    }
}

注:确保BOAPUser类正确继承自IdentityUser,示例:

public class BOAPUser : IdentityUser
{
    // 自定义属性(如有需要)
}

2. 保持Startup.cs配置(当前配置本身合规)

现有Startup配置无需修改,继续使用:

services.AddDefaultIdentity<BOAPUser>(options => options.SignIn.RequireConfirmedAccount = false)
    .AddRoles<IdentityRole>()
    .AddEntityFrameworkStores<ApplicationDbContext>();

3. 修正报错位置的代码

将获取UserManager的类型改为BOAPUser,与注册的服务类型匹配:

using (var scope = app.ApplicationServices.CreateScope())
{
    var userManager = scope.ServiceProvider.GetRequiredService<UserManager<BOAPUser>>();
    // 后续业务逻辑
}

验证修复

完成上述修改后重启应用,调用用户相关功能即可解决"No service for type 'Microsoft.AspNetCore.Identity.UserManager'"的错误。

内容的提问来源于stack exchange,提问作者RJPWilliams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:32:27