配置Blazor Server的ASP.NET Core MVC默认路由指向Home控制器Index方法
解决ASP.NET Core 6 MVC + Blazor Server 默认路由指向MVC Home/Index的问题
你的当前配置里已经加了MVC默认路由,但根路径还是跳Blazor页面的话,十有八九是项目里藏了Blazor的回退路由配置(比如MapFallbackToComponent),这玩意会拦截所有没匹配上的路由,包括根路径。
调整端点配置的正确方式:
- 把MVC的默认路由放在最前面,保证优先级最高
- 修改Blazor的回退路由,别让它抢根路径的匹配权
改完的代码如下:
app.UseEndpoints(endpoints => { endpoints.MapRazorPages(); // MVC默认路由放最前,确保根路径优先匹配Home/Index endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}"); endpoints.MapBlazorHub(); // 只让Blazor处理/blazor前缀下的路由,不影响根路径 endpoints.MapFallbackToComponent("/blazor/{**catchall}", "App"); });
补充注意点:
- 如果之前你写过
MapFallbackToComponent("{*path}", "App")这种全捕获的配置,必须改成带前缀的,不然根路径还是会被Blazor截走。 - 确认
HomeController的Index方法没问题,对应的Views/Home/Index.cshtml视图文件也得存在。 - 测试前清下浏览器缓存,避免旧路由缓存搞事情。
内容的提问来源于stack exchange,提问作者Mark3308
相关产品推荐
相关产品推荐

