调用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库报错:说明Azure SQL数据库未应用你的自定义迁移,执行
- 额外检查Azure Web App的配置页中,连接字符串是否与你本地测试用的Azure库连接字符串一致,避免误连到其他默认库
内容的提问来源于stack exchange,提问作者Taladan
相关产品推荐
相关产品推荐

