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

ASP.NET Core中Scaffolding Identity未生成登录、注册所需页面的问题

ASP.NET Core中Scaffolding Identity未生成登录、注册所需页面的问题

嗨,我来帮你排查下为啥Scaffold Identity没生成登录、注册页面的问题。先结合你给出的Program.cs代码片段,整理几个常见的坑和解决步骤,你可以一步步试:

  • 先确认Scaffold命令是否执行正确
    很多时候是因为没明确指定要生成的页面,默认不会自动生成所有Identity页面。你需要在项目终端里执行带指定文件的命令,比如:

    dotnet aspnet-codegenerator identity -dc ObjectCrudApp.Data.AppDbContext --files "Account.Login;Account.Register"
    

    如果想一次性生成所有Identity相关页面,直接去掉--files参数就行:

    dotnet aspnet-codegenerator identity -dc ObjectCrudApp.Data.AppDbContext
    
  • 检查项目依赖和上下文是否正确

    • 先确保装了必要的NuGet包,没装的话先在终端执行:
      dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
      dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore
      
    • 确认你的AppDbContext是继承自IdentityDbContext(或带自定义用户的IdentityDbContext<ApplicationUser>),而不是普通的DbContext。比如你的上下文应该是类似这样的:
      using ObjectCrudApp.Areas.Identity.Data;
      using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
      using Microsoft.EntityFrameworkCore;
      
      namespace ObjectCrudApp.Data;
      public class AppDbContext : IdentityDbContext<ApplicationUser>
      {
          public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
          {
          }
          // 你的其他实体DbSet...
      }
      
  • 检查Program.cs的服务和中间件配置是否完整
    你现有代码里加了DbContext,但还要确保Identity服务配置到位,比如:

    // 如果你用默认用户(没自定义角色)
    builder.Services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
        .AddEntityFrameworkStores<AppDbContext>();
    
    // 如果需要自定义角色的话,用这个
    // builder.Services.AddIdentity<ApplicationUser, IdentityRole>()
    //     .AddEntityFrameworkStores<AppDbContext>()
    //     .AddDefaultTokenProviders();
    

    另外中间件顺序绝对不能错,必须按这个顺序加:

    var app = builder.Build();
    
    if (!app.Environment.IsDevelopment())
    {
        app.UseExceptionHandler("/Error");
        app.UseHsts();
    }
    
    app.UseHttpsRedirection();
    app.UseStaticFiles();
    
    app.UseRouting();
    
    // 认证必须在授权前面
    app.UseAuthentication();
    app.UseAuthorization();
    
    // 必须加这个,因为Identity页面是Razor Pages
    app.MapRazorPages();
    
    app.Run();
    
  • 清理旧的Identity目录再重试
    如果你的项目里已经有Areas/Identity目录,可能之前生成的文件会导致新的Scaffold命令跳过部分页面。可以先备份这个目录然后删除,再重新执行Scaffold命令试试。

备注:内容来源于stack exchange,提问作者bibashmanjusubedi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 16:04:40