在使用.net 8.0和VS22的项目中使用脚手架身份添加身份时,在Area/Identity/Data文件夹中添加了无名称(空名称)的类?

问题描述 投票:0回答:1

我使用 vs 2022 和 .NET 8.0 Framework 创建了一个新的 .Net core Web 应用程序。项目创建成功,但是当我尝试使用脚手架身份添加 Asp.net core 身份时。我在用户类部分添加 dbcontext 名称和“MyApplicationUser”,然后单击“添加”按钮。 DBcontext 类文件已成功添加到 Area/Identity/Data 文件夹中,但在此文件夹中添加了一个没有名称的类(User Class)。我认为问题出在代码生成器中。

谢谢

First Image

Second Image

.net-core model-view-controller asp.net-identity .net-8.0
1个回答
0
投票

我遇到了同样的问题,虽然我还没有找到直接的解决方案,但我找到了一种可以达到相同结果的解决方法。下面是方法,


  1. 在项目创建过程中,当要求

    Authentication Type
    时,将其从
    None
    更改为
    Individual Accounts
    Authentication_Type_UI

  2. ApplicationUser
    文件创建一个文件,并使其继承于
    IdentityUser
    (这个文件可以放在项目内的任何地方,我把它放在带有
    Data
    ApplicationDbContext
    文件夹中)ApplicationUser_Folder_Structure

using Microsoft.AspNetCore.Identity;

namespace ScaffoldFixExample.Data
{
    public class ApplicationUser : IdentityUser
    {
    }
}
  1. ApplicationDbContext.cs
    文件中,将以下行从

    更改为

    public class ApplicationDbContext : IdentityDbContext

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>

  2. Program.cs
    文件中,将以下行从

    更改为

    builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)

    builder.Services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)

  3. _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
替换为您在创建过程中设置的项目/解决方案名称(根文件夹名称)

  1. 像平常一样创建一个新的脚手架标识 - 右键单击项目/根文件夹 -
    Add
    -
    New Scaffold Item
    -
    Identity
  2. 选择您想要的文件(或单击
    Override all files
  3. DbContextClass
    设置为
    ApplicationDbContext
  4. 点击
    Add

Identity Example

  1. 完成后,打开
    Package Manager Console
    -
    View
    ->
    Other Windows
    ->
    Package Manager Console
  2. 奔跑
    update-database
  3. 更新数据库完成后,只需运行应用程序,它应该可以正常工作(ASP.NET 应该仍然可以工作,并且支持使用自定义 ApplicationUser 注册/登录)

现在自定义

ApplicationUser
已全部设置完毕,可以像平常一样使用了。


注意:这确实会导致文件夹结构与问题中常用/使用的方法略有不同。

要使其看起来/结构相同,请执行以下操作,

  1. Migrations
    文件夹移动到根文件夹

  2. Data
    文件夹移动到
    /Area/Identity/
    文件夹中。

  3. using
    中的
    _LoginPartial.cshtml
    @using <Project>.Data
    更新为
    @using <Project>.Areas.Identity.Data

  4. 在文件中添加

    @using <Project>.Areas.Identity.Data
    /Areas/Identity/Pages/Account/Manage/_ManageNav.cshtml

Before

After

© www.soinside.com 2019 - 2024. All rights reserved.