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

将其他项目的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:30:54