Blazor Auto渲染模式路由NotFound问题求助(InteractiveServer/Wasm)
问题原因解析
1. 路由控制权的默认分配
.NET 8 Blazor Auto App(混合InteractiveServer+InteractiveWebAssembly模式)默认将路由匹配权交给了WebAssembly客户端。客户端启动时只会扫描自身项目内带[Route]特性的组件,不会主动识别Server项目中的路由组件,所以你在Server项目里加的组件路由自然找不到,返回404。而直接在Client项目加组件时,客户端路由系统能正常发现并匹配,所以运行正常。
2. RenderMode设为null的本质
当你把RenderMode设为null,相当于强制切换到静态渲染/Server端直接处理请求的模式。此时路由匹配由Server端的ASP.NET Core路由系统负责,它会扫描Server项目内的路由组件,自然就能找到你添加的组件并正常渲染。
3. 混合模式的组件路由规则
在Blazor混合模式下,Server项目的组件要能被客户端路由识别,需要满足两个条件之一:
- 把Server项目的组件引用到Client项目中,让客户端路由扫描时能发现;
- 在Server端显式配置路由端点,将组件路由映射到对应的Server渲染端点,同时确保客户端路由能正确转发请求到Server。
内容的提问来源于stack exchange,提问作者Hamza Modakir
相关产品推荐
相关产品推荐

