ASP.NET Core Identity脚手架搭建后,登录/注册页面路径无法访问
解决方案:添加Identity脚手架后无法访问登录/注册页面
问题回顾
添加ASP.NET Core Identity脚手架但未覆盖任何页面,尝试以下路径均无法访问注册页面:
mydomain.com/Account/Registermydomain.com/Identity/Account/Registermydomain.com/Identity/Register
_Layout引用的_LoginPartial.cshtml中存在注册链接代码,但无法生效:
<li class="nav-item"> <a class="nav-link text-dark" id="register" asp-area="Identity" asp-page="/Account/Register">Register</a> </li>
核心原因
ASP.NET Core Identity的默认登录/注册页面是嵌入在NuGet包中的,仅添加脚手架但未正确配置路由和服务时,这些嵌入页面无法被路由到。
修复步骤
- 验证服务配置(.NET 6+ 用Program.cs,.NET 5及以前用Startup.cs)
确保已添加Identity服务并启用默认UI:
// .NET 6+ Program.cs builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true) .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultUI(); // 显式启用嵌入的默认UI页面
- 启用Razor页面路由
必须配置MapRazorPages()才能让Identity的Razor页面路由生效:
// .NET 6+ Program.cs app.MapRazorPages(); // .NET 5及以前 Startup.cs Configure方法 app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); endpoints.MapRazorPages(); // 务必添加此行 });
- 确认正确访问路径
嵌入的Identity页面默认正确路径为:
- 注册:
/Identity/Account/Register - 登录:
/Identity/Account/Login_LoginPartial中的标签助手asp-area="Identity"和asp-page="/Account/Register"会自动生成正确URL,前提是路由配置正确。
- 排查残留冲突
如果之前手动覆盖过Identity页面后又删除,检查项目中是否残留Identity文件夹或相关页面文件,这些可能导致路由冲突,需彻底清理。
内容的提问来源于stack exchange,提问作者BWhite
相关产品推荐
相关产品推荐

