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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 06:23:22