将其他项目的Razor Pages集成到Blazor项目中遇路由异常
解决Blazor Server中RCL项目Identity Razor Pages 404问题
以下是针对性的修复步骤:
1. 让ASP.NET Core发现RCL中的Razor Pages
AddRazorPages()默认仅扫描主项目的Razor Pages,需显式将RCL程序集添加到Razor Pages应用部件中。修改Program.cs中的AddRazorPages()配置:
builder.Services.AddRazorPages() // 替换为你RCL中任意一个Identity Razor Page的Model类型 .AddApplicationPart(typeof(IdentityUI.Pages.Account.ForgotPasswordModel).Assembly);
2. 调整端点路由配置顺序
路由映射顺序会影响请求匹配逻辑,需确保MapRazorPages()在兜底的MapFallbackToPage()之前执行,避免Blazor的兜底路由拦截Razor Pages请求。简化端点配置:
// 移除原有的app.MapBlazorHub(); app.MapControllers(); 以及UseEndpoints代码块,替换为: app.MapRazorPages(); app.MapControllers(); app.MapBlazorHub(); app.MapFallbackToPage("/_Host");
3. 验证RCL中Razor Pages的路由指令
检查RCL内ForgotPassword.cshtml文件的@page指令,确保路由模板正确:
@page "/Identity/Account/ForgotPassword" @model IdentityUI.Pages.Account.ForgotPasswordModel
4. 确认RCL项目类型
确保你的IdentityUI项目是支持Pages/Views的Razor Class Library:
- 若为新项目,创建时需选择"Razor Class Library"并勾选"Support pages and views"选项
- 若为已有项目,确认项目文件(.csproj)包含以下配置:
<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> <TargetFramework>net7.0</TargetFramework> <!-- 对应你的.NET版本 --> <AddRazorSupportForMvc>true</AddRazorSupportForMvc> </PropertyGroup> </Project>
完成以上步骤后重启应用,访问/Identity/Account/ForgotPassword即可正常加载对应的Razor Page。
内容的提问来源于stack exchange,提问作者GisMofx
相关产品推荐
相关产品推荐

