我使用 vs 2022 和 .NET 8.0 Framework 创建了一个新的 .Net core Web 应用程序。项目创建成功,但是当我尝试使用脚手架身份添加 Asp.net core 身份时。我在用户类部分添加 dbcontext 名称和“MyApplicationUser”,然后单击“添加”按钮。 DBcontext 类文件已成功添加到 Area/Identity/Data 文件夹中,但在此文件夹中添加了一个没有名称的类(User Class)。我认为问题出在代码生成器中。
谢谢
我遇到了同样的问题,虽然我还没有找到直接的解决方案,但我找到了一种可以达到相同结果的解决方法。下面是方法,
在项目创建过程中,当要求
Authentication Type
时,将其从 None
更改为 Individual Accounts
为
ApplicationUser
文件创建一个文件,并使其继承于IdentityUser
(这个文件可以放在项目内的任何地方,我把它放在带有Data
的ApplicationDbContext
文件夹中)
using Microsoft.AspNetCore.Identity;
namespace ScaffoldFixExample.Data
{
public class ApplicationUser : IdentityUser
{
}
}
在
ApplicationDbContext.cs
文件中,将以下行从 更改为
public class ApplicationDbContext : IdentityDbContext
到
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
在
Program.cs
文件中,将以下行从 更改为
builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
到
builder.Services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
在
_LoginPartial.cshtml
中/Views/Shared
中,更改beg
@using Microsoft.AspNetCore.Identity
@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager
到
@using Microsoft.AspNetCore.Identity
@using ScaffoldFixExample.Data
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
注意:将
ScaffoldFixExample
替换为您在创建过程中设置的项目/解决方案名称(根文件夹名称)
Add
- New Scaffold Item
- Identity
Override all files
)DbContextClass
设置为 ApplicationDbContext
Add
Package Manager Console
- View
-> Other Windows
-> Package Manager Console
update-database
现在自定义
ApplicationUser
已全部设置完毕,可以像平常一样使用了。
注意:这确实会导致文件夹结构与问题中常用/使用的方法略有不同。
要使其看起来/结构相同,请执行以下操作,
将
Migrations
文件夹移动到根文件夹
将
Data
文件夹移动到 /Area/Identity/
文件夹中。
将
using
中的_LoginPartial.cshtml
从@using <Project>.Data
更新为@using <Project>.Areas.Identity.Data
在文件中添加
@using <Project>.Areas.Identity.Data
/Areas/Identity/Pages/Account/Manage/_ManageNav.cshtml