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

.NET 8 Blazor Web App中,InteractiveWebAssemblyRenderMode共享库页面导航失效

解决.NET 8 Blazor Web App中WebAssembly模式识别共享类库页面的问题

核心解决方案:注册共享程序集

.NET 8完全支持通过指定额外程序集让Client项目识别共享类库中的Blazor组件/页面,就是你提到的类似AdditionalAssemblies的配置方式,具体操作如下:

  • 修改Client项目的Program.cs
    在注册Razor组件的代码段中,添加AddAdditionalAssemblies方法,传入共享类库中任意页面的类型,以此指定要加载的目标程序集:

    var builder = WebAssemblyHostBuilder.CreateDefault(args);
    builder.RootComponents.Add<App>("#app");
    builder.RootComponents.Add<HeadOutlet>("head::after");
    
    // 注册WebAssembly组件并添加共享程序集
    builder.Services.AddRazorComponents()
        .AddInteractiveWebAssemblyComponents()
        .AddAdditionalAssemblies(typeof(Frontend.Interface.Pages.Job).Assembly);
    
    // 其他服务注册逻辑...
    
    await builder.Build().RunAsync();
    
  • 确保共享类库的依赖配置正确

    • 共享Razor类库需引用Microsoft.AspNetCore.Components NuGet包(若专门针对WebAssembly场景,也可引用Microsoft.AspNetCore.Components.WebAssembly)
    • 确认共享页面的命名空间Frontend.Interface.Pages无误,且组件访问修饰符为public(Razor组件默认是public,除非手动修改了代码隐藏文件)
  • 路由与跨端渲染补充

    • 检查共享页面的@page指令是否正确,比如@page "/job",避免与Client项目内页面路由冲突
    • 若需要服务端也能渲染该共享页面,在Server项目的Program.cs中也要添加相同的AddAdditionalAssemblies配置:
      builder.Services.AddRazorComponents()
          .AddInteractiveServerComponents()
          .AddInteractiveWebAssemblyComponents()
          .AddAdditionalAssemblies(typeof(Frontend.Interface.Pages.Job).Assembly);
      

报错原因说明

将页面放在Client项目时,Blazor会自动扫描当前程序集内的组件;但放在共享类库时,Client项目默认不会扫描外部程序集的Blazor组件,因此需要手动指定额外程序集,让Blazor定位到对应的根组件类型。

内容的提问来源于stack exchange,提问作者Adil Ansari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:16:03