雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

Blazor NavigateTo报错Microsoft.AspNetCore.Components.NavigationException:“Exception_WasThrown”

2024-10-11 24

使用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上也看到有人提出的一样的问题,但是没有解决就关闭了。

如果有更好的解决办法欢迎留言分享。

更新于:1个月前
赞一波!

文章评论

评论问答