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

调用Microsoft Identity接口导致Azure Web App运行崩溃问题求助

核心问题定位

你遇到的Invalid object name 'AspNetUsers'报错本质是EF Core在执行Identity相关查询时,仍在使用默认表名映射,没有读取你自定义的Identity.Users表配置。本地运行正常、Azure部署后报错,可按以下步骤逐层排查:


排查步骤

1. 检查DbContext的OnModelCreating执行顺序

必须先调用基类的OnModelCreating方法,再修改自定义表名配置,否则Identity的默认配置会覆盖你的自定义规则,正确写法如下:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    // 先执行基类的Identity默认配置
    base.OnModelCreating(modelBuilder);
    
    // 再修改自定义表名
    modelBuilder.Entity<AppUser>(entity =>
    {
        entity.ToTable(name: "Users", "Identity");
    });
    
    // 若你同时使用了Identity其他内置实体(角色、用户角色关联等),也要同步修改表名,避免后续其他表报错
    modelBuilder.Entity<IdentityRole>(entity =>
    {
        entity.ToTable(name: "Roles", "Identity");
    });
    modelBuilder.Entity<IdentityUserRole<string>>(entity =>
    {
        entity.ToTable(name: "UserRoles", "Identity");
    });
    // 其余Identity表(UserClaims、UserLogins、RoleClaims、UserTokens)按需同步配置
}

2. 检查Identity服务注入配置

确认服务端Program.cs中注入Identity时,使用的是你自定义的AppUser类,而非默认的IdentityUser类:

// 错误写法:用了默认IdentityUser,会读取默认表映射
// builder.Services.AddIdentityCore<IdentityUser>(...)

// 正确写法:指定自定义的AppUser类
builder.Services.AddIdentityCore<AppUser>(options => {
    // 你的Identity配置
})
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<你的DbContext类名>()
// 其余Identity中间件配置

3. 检查迁移文件是否正确

打开你项目中Migrations文件夹下的最新迁移文件,确认AppUser对应的建表语句生成的是[Identity].[Users]而非[dbo].[AspNetUsers]。如果迁移生成的表名不对,删除现有迁移重新生成即可。

4. 验证Azure部署配置

  • 将本地开发环境的数据库连接字符串替换为Azure SQL数据库的连接字符串,本地运行服务端项目,排查是否能正常调用UserManager/RoleManager:
    • 本地连Azure库报错:说明Azure SQL数据库未应用你的自定义迁移,执行Update-Database -Connection "你的Azure库连接字符串"同步表结构即可
    • 本地连Azure库正常:说明你部署到Azure Web App的代码版本不是最新,检查发布配置后重新发布即可
  • 额外检查Azure Web App的配置页中,连接字符串是否与你本地测试用的Azure库连接字符串一致,避免误连到其他默认库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:36:03