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

.NET Core Web应用项目添加Identity时出错求助

现有ASP.NET Core 7.0项目脚手架Identity登录功能报错问题

我按照官方文档步骤为现有ASP.NET Core 7.0项目添加登录功能时,执行Identity脚手架操作出现错误。相关截图如下:

操作界面截图:
操作界面
错误界面截图:
错误界面

我的soa_dbContext代码如下:

public partial class soa_dbContext : DbContext
{
    public soa_dbContext()
    {
    }

    public soa_dbContext(DbContextOptions<soa_dbContext> options)
        : base(options)
    {
    }

    public virtual DbSet<Artikel> Artikels { get; set; } = null!;
    public virtual DbSet<Locatie> Locaties { get; set; } = null!;
    public virtual DbSet<Rol> Rols { get; set; } = null!;
    public virtual DbSet<SoaBepaling> SoaBepalings { get; set; } = null!;
    public virtual DbSet<Status> Statuses { get; set; } = null!;
    public virtual DbSet<User> Users { get; set; } = null!;

    internal static object Where(Func<object, bool> value)
    {
        throw new NotImplementedException();
    }
}

问题根源

  1. soa_dbContext仅继承基础DbContext,未继承Identity必需的IdentityDbContext,脚手架无法识别该上下文用于身份验证存储。
  2. 自定义的静态Where方法会干扰EF Core查询逻辑,导致脚手架反射时出错。
  3. 若User类未继承IdentityUser,Identity无法将其识别为合法用户实体。

解决步骤

1. 修改DbContext继承关系并清理冗余代码

将soa_dbContext改为继承IdentityDbContext<User>,同时删除多余的Where方法:

public partial class soa_dbContext : IdentityDbContext<User>
{
    public soa_dbContext()
    {
    }

    public soa_dbContext(DbContextOptions<soa_dbContext> options)
        : base(options)
    {
    }

    // 保留原有业务实体DbSet
    public virtual DbSet<Artikel> Artikels { get; set; } = null!;
    public virtual DbSet<Locatie> Locaties { get; set; } = null!;
    public virtual DbSet<Rol> Rols { get; set; } = null!;
    public virtual DbSet<SoaBepaling> SoaBepalings { get; set; } = null!;
    public virtual DbSet<Status> Statuses { get; set; } = null!;

    // 移除自定义Users DbSet,IdentityDbContext已内置用户相关存储
    // public virtual DbSet<User> Users { get; set; } = null!;
}

2. 确保User类继承IdentityUser

修改User类,使其继承IdentityUser以支持Identity身份验证功能:

public class User : IdentityUser
{
    // 可添加自定义用户字段,如姓名、部门等
}

3. 配置Identity服务

在Program.cs中配置DbContext和Identity服务:

// 配置DbContext连接
builder.Services.AddDbContext<soa_dbContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("soa_dbContextConnection")));

// 添加Identity服务,指定用户实体和DbContext
builder.Services.AddDefaultIdentity<User>(options => options.SignIn.RequireConfirmedAccount = true)
    .AddEntityFrameworkStores<soa_dbContext>();

4. 重新执行脚手架操作

打开Visual Studio的Identity脚手架工具,选择更新后的soa_dbContext,勾选需要生成的登录、注册等页面,重新执行生成操作。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:01:40