Blazor Net8中@page "/Test"路由无法匹配页面的问题
确认TestPage文件已被项目包含
右键项目选择「显示所有文件」,检查TestPage.razor是否为灰色状态(未被纳入项目)。如果是,右键该文件选择「包括在项目中」。你之前添加的<Folder Include="Features\Home\"/>仅针对Home目录,若TestPage不在此目录下,需添加对应目录的Include配置,比如TestPage在Features/Test目录时,添加<Folder Include="Features\Test\"/>到.csproj中。检查TestPage的命名空间与Router扫描范围
确保TestPage的命名空间正确(比如放在Features/Test目录时,命名空间应为你的项目名.Features.Test)。默认情况下,Blazor Router会扫描当前程序集(@typeof(App).Assembly)下的所有组件,若Router配置中未修改AdditionalAssemblies,只要组件在当前项目且命名空间正确,就能被扫描到。验证Router组件配置
打开App.razor,确认Router配置完整且正确,示例如下:<Router AppAssembly="@typeof(App).Assembly"> <Found Context="routeData"> <RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" /> </Found> <NotFound> <PageTitle>Not found</PageTitle> <LayoutView Layout="@typeof(MainLayout)"> <p role="alert">Sorry, there's nothing at this address.</p> </LayoutView> </NotFound> </Router>重点确认
AppAssembly指向正确,且RouteView能正常渲染匹配的组件。检查@page指令的正确性
确认TestPage.razor顶部的@page "/Test"无拼写错误,路由路径与手动访问的URL完全一致(Blazor路由默认大小写不敏感,但建议保持一致避免意外)。同时排查是否有其他组件使用了相同的路由路径,路由冲突也会导致404。清理重建项目
缓存可能导致组件未被正确编译,执行以下步骤:右键项目→「清理」,然后点击「生成」→「重建解决方案」,最后重新运行应用。
内容的提问来源于stack exchange,提问作者Diego

