Blazor Server跨项目配置导航Href指向其他项目页面报错
Blazor Server跨项目页面导航失败问题解决
问题背景
使用Microsoft.AspNetCore.App.Ref v6.0.0和MudBlazor 6.10.0搭建Blazor Server解决方案,包含两个项目:
- ProjectA:完整Blazor脚手架代码,MudNavMenu中配置导航项:
<MudNavLink Href="/modelrange/model1" - ProjectB:包含需被ProjectA引用的Blazor页面与组件,其中
Pages/ModelRange/index.razor路由定义为:@page "/modelrange/model1"
点击导航链接时提示:
there's nothing at this address.
已尝试在ProjectA的Startup.cs中添加:
services.AddRazorPages().AddApplicationPart(Assembly.Load("ProjectB"));
但问题未解决。
解决步骤
添加项目引用
确保ProjectA已添加对ProjectB的项目引用(右键ProjectA → 添加 → 项目引用 → 勾选ProjectB),仅通过程序集加载可能无法正确识别依赖关系。补充Blazor服务的程序集注册
Blazor Server的路由不仅依赖Razor Pages配置,还需要将ProjectB的程序集添加到ServerSideBlazor服务中。修改ProjectA的Startup.cs:using System.Reflection; using ProjectB.Pages.ModelRange; // 引入ProjectB的页面类型,避免硬编码程序集名称 public void ConfigureServices(IServiceCollection services) { // 获取ProjectB的程序集 var projectBAssembly = typeof(Index).Assembly; // 给RazorPages和ServerSideBlazor都添加程序集 services.AddRazorPages().AddApplicationPart(projectBAssembly); services.AddServerSideBlazor().AddApplicationPart(projectBAssembly); }用
typeof获取程序集比直接写字符串更可靠,避免因程序集名称变更导致加载失败。验证路由与链接一致性
确认导航链接的Href值和页面的@page路由完全一致,注意路径的斜杠、大小写(尽管Blazor路由默认不区分大小写,但保持一致可避免意外问题)。清理并重新生成解决方案
清理解决方案(右键解决方案 → 清理),然后重新生成所有项目,确保程序集更新生效。
内容的提问来源于stack exchange,提问作者BankMan101
相关产品推荐
相关产品推荐

