ASP.NET Core 6.0 scaffolded Identity页面未生效,仍用RCL默认页面
解决.NET 6.0中独立项目Identity脚手架页面不加载的问题
你遇到的问题核心是.NET 6.0的Razor Pages默认只会扫描当前网站项目的程序集查找页面,独立项目的Identity页面没有被纳入扫描范围,导致依然使用RCL中的默认页面。以下是需要补充的关键配置:
1. 确保独立项目是正确的类型
如果你的独立项目是普通类库,需要修改其.csproj文件,切换为Razor类库并启用MVC支持:
<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> <TargetFramework>net6.0</TargetFramework> <AddRazorSupportForMvc>true</AddRazorSupportForMvc> </PropertyGroup> <!-- 保留原有的包引用,比如Microsoft.AspNetCore.Identity.EntityFrameworkCore、EntityFrameworkCore相关包 --> </Project>
如果是新建项目,直接选择Razor Class Library模板并勾选"支持页面和视图"即可。
2. 网站项目中配置Razor Pages扫描独立项目程序集
在网站项目的Program.cs中,添加Razor Pages应用部件,指定扫描独立项目的程序集:
// 先配置Identity和DbContext(确保使用独立项目中的ApplicationDbContext) builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"))); builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true) .AddEntityFrameworkStores<ApplicationDbContext>(); // 关键:添加独立项目的程序集到Razor Pages扫描范围 // 这里用独立项目中任意一个Identity页面的Model类型来获取程序集,比如LoginModel builder.Services.AddRazorPages() .AddApplicationPart(typeof(SharedIdentity.Areas.Identity.Pages.Account.LoginModel).Assembly);
3. 验证页面路径和命名空间
- 独立项目中的Identity页面路径必须和RCL默认路径完全一致:
Areas/Identity/Pages/Account/Login.cshtml、Areas/Identity/Pages/Account/Register.cshtml等,路径不匹配无法覆盖默认页面。 - 独立项目的
_ViewImports.cshtml要正确配置命名空间和TagHelper:
@using Microsoft.AspNetCore.Identity @using 你的独立项目命名空间.Data @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @namespace 你的独立项目命名空间.Areas.Identity.Pages
4. 清理缓存并重新生成
- 清理解决方案的bin/obj文件夹,重新生成所有项目。
- 清除浏览器缓存或使用无痕模式测试,避免旧页面缓存干扰。
完成以上配置后,独立项目中的Identity页面就会被正确加载,替代RCL中的默认页面。
内容的提问来源于stack exchange,提问作者Sean
相关产品推荐
相关产品推荐

