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

.NET 8 Blazor从Razor类库加载页面时的路由问题

.NET 8 Blazor 路由404问题(Razor类库页面)解决方法

可能的原因及对应解决步骤

1. 检查Razor类库(RCL)页面的路由指令

打开RCL中PostsPage.razor文件,确认@page指令的路由格式正确:

  • 比如@page "/posts",无多余空格、拼写错误
  • 确保该路由没有和主项目中其他页面的路由重复(重复会导致RCL页面被覆盖)

2. 确认Routes.razor中的程序集引用正确

  • 首先在Routes.razor顶部添加RCL的命名空间引用,比如:
    @using YourRCLNamespace; // 替换成你的RCL实际命名空间
    
  • 避免在标记中直接写数组初始化,改用代码块方式更可靠:
    @code {
        private readonly IEnumerable<Assembly> _additionalAssemblies = new[] { typeof(PostsPage).Assembly };
    }
    
    <Router AppAssembly="@typeof(Program).Assembly"
            AdditionalAssemblies="@_additionalAssemblies">
        <!-- 原Found/NotFound内容保持不变 -->
    </Router>
    
    这样可以避免标记语法解析错误导致程序集未被加载。

3. 根据Blazor交互模式补充服务配置

.NET 8 Blazor Web App采用分层架构,不同交互模式需要在对应Program.cs中添加额外程序集:

  • Interactive Server模式(服务器端):
    在服务器项目的Program.cs中修改服务配置:
    builder.Services.AddRazorComponents()
        .AddInteractiveServerComponents()
        .AddAdditionalAssemblies(typeof(PostsPage).Assembly); // 添加这一行
    
  • Interactive WebAssembly模式(客户端):
    在客户端项目的Program.cs中修改:
    builder.Services.AddRazorComponents()
        .AddInteractiveWebAssemblyComponents()
        .AddAdditionalAssemblies(typeof(PostsPage).Assembly); // 添加这一行
    
    这是升级到.NET 8后容易忽略的点,虽然文档说无需额外配置,但分层架构下需要显式添加。

4. 清理编译缓存并重建项目

  • 右键解决方案 → 选择「清理解决方案」
  • 删除所有项目的bin和obj文件夹
  • 重新生成整个解决方案
    升级项目或引用RCL后,编译缓存可能导致程序集未被正确加载,这一步能解决大部分隐性问题。

5. 确认RCL的目标框架与主项目一致

将RCL的目标框架改为.NET 8(与主项目相同),避免跨版本兼容导致的程序集加载异常。

内容的提问来源于stack exchange,提问作者Husam Ebish

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:12:51