2023-04-02
284 0使用Blazor,在OnInitialized里执行NavigationManager.NavigateTo("/")的时候报错了:
Microsoft.AspNetCore.Components.NavigationException:“Exception_WasThrown”
网上看到说这个问题只出现在render-mode=ServerPrerendered,如果改成render-mode=Server就能好,但是我们需要使用ServerPrerendered模式,所以这不是一个很好的解决方法。
看异常信息也没有更详细的描述。
实际上它正常执行了NavigateTo("/"),并且成功地跳转到了/页面,但是会有异常中断。
我解决它的办法是把OnInitialized改为OnInitializedAsync,代码如下:
@code {
protected override async Task OnInitializedAsync()
{
if (!UserState.IsLoggedIn)
{
NavigationManager.NavigateTo("/");
}
}
}
这样不会有异常,代码正常执行跳转,但是会有警告因为没有await。
Trouble with NavigateTo within OnInitialized
https://github.com/dotnet/aspnetcore/issues/13582
在GitHub上也看到有人提出的一样的问题,但是没有解决就关闭了。
如果有更好的解决办法欢迎留言分享。