Blazor Server引用RCL DLL设置首页遇404问题求助
解决Blazor Server引用独立RCL DLL后页面404的问题
以下是针对问题的排查和解决步骤:
1. 确认RCL的编译与引用正确性
- 确保你的RCL项目是Razor Class Library类型(而非普通类库),且编译目标.NET版本与Blazor Server项目完全一致。
- 检查添加的DLL引用是否为RCL编译后的最新版本,可尝试删除旧引用,重新从Azure DevOps归档拉取最新DLL添加。
2. 修正Routes.razor的路由配置
你当前的Routes.razor代码存在语法问题,Razor表达式需要用@标记才能正确解析,修改后的代码如下:
<Router AppAssembly="@typeof(Program).Assembly" AdditionalAssemblies="@(new[] { typeof(Default).Assembly })"> <!-- 保留原Router内的Found、NotFound等核心内容 --> </Router>
- 注意:
typeof(Default)必须能正确定位到RCL中Default.razor对应的类,若该组件在RCL的特定命名空间下(如MySharedRCL.Pages),需完整写为typeof(MySharedRCL.Pages.Default)。
3. 验证RCL页面的路由标记
确认RCL中Default.razor的@page "/"标记无拼写错误,且Blazor Server项目中不存在其他标记为@page "/"的组件(你已移除Home.razor,此点可忽略,但需确保无遗漏)。
4. 清理缓存并重建项目
- 删除Blazor Server项目下的
bin和obj文件夹,清理编译缓存。 - 重新生成Blazor Server项目,确保RCL DLL被正确复制到输出目录。
5. 排查依赖注入问题
虽然你遇到的是404,但如果RCL组件依赖的服务未正确注册或初始化,可能间接引发路由匹配失败:
- 需在
Default.razor顶部添加@inject NavigationManager navManager,显式注入导航服务。 - 确认
config对应的配置服务已在Server项目Program.cs中完成注册(如builder.Configuration相关配置)。 - 检查
BusinessSingleton是否在Server项目中完成初始化,确保GetBySiteID方法能正常调用。
内容的提问来源于stack exchange,提问作者Bonan73
相关产品推荐
相关产品推荐

