You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor Server中使用NavigationManager跳转登录页失效问题求助

问题成因

  • Blazor Server内置的Identity注册/登录页面本质是Razor Pages,不属于Blazor组件的路由管控范围,默认由服务端路由负责匹配。NavigationManager.NavigateTo默认走Blazor客户端路由逻辑,没有匹配到对应Blazor组件就会返回404。
  • 你写的跳转路径是相对路径,如果当前页面路由层级大于1,相对路径会和当前路径拼接生成错误的目标地址,导致访问失败。
  • 若项目自定义过Identity的路由前缀,实际登录页路径和你填写的Identity/Account/Login不一致也会触发404。

修复方案

调整跳转逻辑的参数即可,推荐写法如下:

<Button @onclick="@(() => navigationManager.NavigateTo("/Identity/Account/Login", forceLoad: true))">前往登录页</Button>

修改说明:

  1. 路径开头加/指定为根路径,避免和当前页面路径拼接生成错误地址
  2. 加forceLoad: true参数,强制浏览器跳过Blazor客户端路由,直接向服务端发起请求,就能正常匹配到Razor Pages格式的Identity页面

如果是.NET 7及以上版本,也可以注入SignInManager<IdentityUser>后调用内置的跳转方法,不需要手动硬编码登录页路径。

内容的提问来源于stack exchange,提问作者SlappingTheBass12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:45:04