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

使用自定义CustomUser类时出现UserManager服务未注册错误

问题解决:InvalidOperationException: No service for type 'UserManager' has been registered

错误原因

你已通过AddDefaultIdentity<CustomUser>注册了基于自定义用户类的身份服务,但项目中仍有代码在尝试注入UserManager<IdentityUser>(而非UserManager<CustomUser>),导致依赖注入容器无法找到对应服务实例。

解决方案

1. 替换所有注入的UserManager类型

检查项目中所有使用UserManager的位置(控制器、服务类、视图组件等),将泛型参数从IdentityUser改为CustomUser。

示例(控制器修改):
原代码:

public class AccountController : Controller
{
    private readonly UserManager<IdentityUser> _userManager;

    public AccountController(UserManager<IdentityUser> userManager)
    {
        _userManager = userManager;
    }
}

修改后:

public class AccountController : Controller
{
    private readonly UserManager<CustomUser> _userManager;

    public AccountController(UserManager<CustomUser> userManager)
    {
        _userManager = userManager;
    }
}

2. 清理CustomUser类的冗余属性

CustomUser继承的IdentityUser已内置Email、PasswordHash等属性,无需重复定义,否则会引发EF Core映射冲突。修改后的CustomUser类:

using Microsoft.AspNetCore.Identity;

namespace WebApplication3.Models
{
    public class CustomUser : IdentityUser
    {
        // 在此添加你的自定义属性,例如:
        public string FullName { get; set; }
    }
}

3. 确保DbContext使用正确的泛型基类

检查ApplicationDbContext是否继承自IdentityDbContext<CustomUser>,而非默认的IdentityDbContext:

using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using WebApplication3.Models;

namespace WebApplication3.Data
{
    public class ApplicationDbContext : IdentityDbContext<CustomUser>
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        {
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:05:06