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

Add Identity对话框用户类选项禁用,Identity脚手架搭建报错如何解决

排查步骤

  • 首先校验所有相关NuGet包的版本一致性:所有Microsoft.AspNetCore.Identity.*、Microsoft.EntityFrameworkCore.*、Microsoft.VisualStudio.Web.CodeGeneration.Design包的主版本号必须和项目的目标.NET SDK版本完全匹配,例如项目目标框架为.NET 6时,不允许安装7.x及以上版本的上述包,版本不匹配会直接导致代码生成器无法识别自定义用户类,出现选择框禁用的问题。
  • 检查服务注册配置:在Program.cs(.NET 6+)或Startup.cs中,需显式指定Identity服务的用户类型,示例配置如下:
// .NET 6+ Program.cs 示例
builder.Services.AddIdentity<ApplicationUser, IdentityRole>(options => {})
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultTokenProviders();

未显式注册ApplicationUser的情况下,脚手架无法扫描到对应的用户类,会默认禁用选择框。

  • 提前编译整个项目:Identity脚手架需要从已编译的程序集中读取类型定义,在触发脚手架生成前,先手动生成一次整个解决方案,避免未编译导致自定义类无法被识别。
  • 处理包还原失败问题:
    • 关闭VS后删除项目根目录下的.vs、bin、obj文件夹,清除本地缓存的生成文件
    • 在NuGet包源设置中,将nuget.org官方源设为最高优先级,临时禁用其他私有包源,避免私有源拉包失败导致回滚
    • 手动在项目目录下执行dotnet restore命令,确认没有报错后再尝试生成脚手架
  • 绕开UI脚手架的稳定性问题:VS内置的Identity脚手架UI确实存在较多适配bug,可直接使用命令行工具生成所需页面,无需通过UI选择,示例命令如下:
# 生成所有Identity页面,指定数据库上下文和用户类
dotnet aspnet-codegenerator identity -dc ApplicationDbContext -u ApplicationUser
# 如果只需生成部分页面,可加--files参数指定,例如只生成登录、注册页
dotnet aspnet-codegenerator identity -dc ApplicationDbContext -u ApplicationUser --files "Account.Login;Account.Register"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:57:02