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

Blazor WebAssembly自定义页面路由404问题求助

Blazor WebAssembly (.NET 7) 新增页面路由404问题排查与解决

针对你遇到的新增页面无法访问的问题,可按以下步骤逐一排查:

  • 检查页面文件编译属性
    右键DialogTestPage.razor文件 → 属性,确保「生成操作」设置为Content,「复制到输出目录」选择「如果较新则复制」或「始终复制」。部分情况下新增文件的编译属性会默认异常,导致页面未被打包到输出产物中。

  • 验证App.razor路由配置
    确认Router组件的基础配置正确,默认模板的配置应包含项目主程序集:

    <Router AppAssembly="@typeof(App).Assembly">
        <Found Context="routeData">
            <RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
            <FocusOnNavigate RouteData="@routeData" Selector="h1" />
        </Found>
        <NotFound>
            <PageTitle>Not found</PageTitle>
            <LayoutView Layout="@typeof(MainLayout)">
                <p role="alert">Sorry, there's nothing at this address.</p>
            </LayoutView>
        </NotFound>
    </Router>
    

    若项目拆分了程序集,需额外添加AdditionalAssemblies参数指定页面所在程序集,但默认单程序集模板无需此操作。

  • 排查路由模板语法
    确认@page "/dialogtestpage"无多余空格、拼写错误(Blazor路由默认大小写不敏感,但建议保持路径与导航链接一致),避免使用未转义的特殊字符。

  • 强制清除浏览器缓存
    按Ctrl+Shift+R强制刷新页面,或打开浏览器开发者工具(F12)→ 网络面板,勾选「禁用缓存」后重新加载项目。Blazor WASM的静态资源可能被浏览器缓存,导致新页面路由未被识别。

  • 验证页面是否被编译识别
    在Program.cs中添加代码,打印所有可路由组件的路径,确认页面是否被正确编译:

    using Microsoft.AspNetCore.Components;
    using System.Reflection;
    
    var builder = WebAssemblyHostBuilder.CreateDefault(args);
    builder.RootComponents.Add<App>("#app");
    builder.RootComponents.Add<HeadOutlet>("head::after");
    
    // 打印所有可路由页面信息
    var assembly = typeof(App).Assembly;
    var routablePages = assembly.GetTypes()
        .Where(t => t.IsSubclassOf(typeof(ComponentBase)) && t.GetCustomAttributes<RouteAttribute>().Any());
    foreach (var page in routablePages)
    {
        var routes = page.GetCustomAttributes<RouteAttribute>().Select(r => r.Template);
        Console.WriteLine($"页面: {page.Name} | 路由: {string.Join(", ", routes)}");
    }
    
    await builder.Build().RunAsync();
    

    运行项目后,查看浏览器控制台(F12→控制台),若未出现DialogTestPage的路由信息,说明页面未被纳入编译,需检查文件是否被排除在项目外,或重新确认编译属性。

  • 确认项目目标框架配置
    右键项目→属性→应用程序,确认目标框架为.NET 7.0,避免因框架版本不匹配导致编译异常。

内容的提问来源于stack exchange,提问作者Claude Nikula

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:54:59