将Razor页面与布局移至RCL后Blazor Server出现404问题求助
解决Blazor Server迁移RCL后404问题的排查步骤
针对你把Pages和Layouts移到RCL后出现的404问题,结合.NET 8环境,按以下步骤排查:
- 确认RCL项目类型:创建RCL时必须选择「支持 Razor 组件和页面」的模板,普通类库不会自动注册路由组件。如果选错了,重新创建符合要求的RCL再迁移文件。
- 检查页面路由属性:确保RCL中每个页面的
@page指令正确,比如Home页的@page "/"没有被误删或修改路径。 - 简化AdditionalAssemblies配置:不需要指定多个Assembly,直接引用RCL的根Assembly即可,示例:
一个RCL仅对应一个Assembly,重复指定属于冗余操作,重点是确保引用的是RCL的Assembly。<Router AppAssembly="@typeof(Program).Assembly" AdditionalAssemblies="new[] { typeof(ComponentLib.Components.Layout.MainLayout).Assembly }"> <Found Context="routeData"> <RouteView RouteData="@routeData" DefaultLayout="@typeof(ComponentLib.Components.Layout.MainLayout)"/> <FocusOnNavigate RouteData="@routeData" Selector="h1" /> </Found> </Router> - 验证DefaultLayout的命名空间:Router中的
DefaultLayout要明确指向RCL中的布局类,避免引用主项目中残留的旧布局,建议写全命名空间(如上代码示例)。 - 检查项目引用:主Blazor Server项目必须通过项目引用关联RCL(本地开发场景),并且确保RCL已成功构建,引用的是最新版本。
- 清理重建解决方案:删除主项目和RCL的
bin、obj文件夹,重新构建整个解决方案,避免缓存导致路由未更新。 - 确认RCL文件的@namespace:检查RCL中页面和布局的
@namespace指令,避免与主项目的命名空间完全冲突。
内容的提问来源于stack exchange,提问作者steakoverflow
相关产品推荐
相关产品推荐

