Asp.Net Core项目Identity配置及项目引用相关技术咨询
问题解决梳理
嘿,针对你的场景,我整理了几个关键的解决步骤:
1. 先满足SDK与编译上下文的要求
- 打开你的AdminPanel项目的
.csproj文件,确认第一行的SDK声明为:<Project Sdk="Microsoft.NET.Sdk.Web"> - 检查文件中是否存在
<PreserveCompilationContext>false</PreserveCompilationContext>配置项,如果有直接删除即可(默认情况下该属性无需手动设置,只要不设为false就符合要求)。
2. 统一Identity用户类与DbContext的引用
你的Api类库已经定义了AppUser和对应的IdentityDbContext<AppUser>,AdminPanel无需再使用ApplicationUser,直接引用Api类库的类型即可:
- 先在AdminPanel项目中添加对Api类库的项目引用(右键AdminPanel → 添加 → 项目引用 → 选中你的Api类库)。
- 修改Startup.cs中的Identity配置代码,把
ApplicationUser替换为Api类库的AppUser,同时指定对应的DbContext:// 先引入Api类库的命名空间,示例: using YourApiProject.Models; // 假设AppUser在该命名空间下 using YourApiProject.Data; // 假设DbContext在该命名空间下 // 调整AddIdentity配置: services.AddIdentity<AppUser, IdentityRole>(config => { config.User.RequireUniqueEmail = true; config.Password.RequiredLength = 6; // 补全你需要的密码规则 // 可添加其他如密码复杂度、账号锁定等配置 }) .AddEntityFrameworkStores<YourDbContextName>() // 替换为Api类库中DbContext的实际类名 .AddDefaultTokenProviders();
3. 确保DbContext的连接配置正确
因为AdminPanel是启动项目,连接字符串需配置在它的appsettings.json中,然后在Startup.cs里注册DbContext(建议放在AddIdentity之前):
services.AddDbContext<YourDbContextName>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
记得把DefaultConnection替换成你在appsettings.json中定义的连接字符串名称。
内容的提问来源于stack exchange,提问作者Vali.Pay
相关产品推荐
相关产品推荐

