我一直在使用新的 .Net 8 Blazor 模板,并遇到了身份验证和设置全局 InteractiveServer 渲染模式的问题。我所做的更改是在 App.Razor 文件中更改为:
<Routes @rendermode="InteractiveServer" />
Run Code Online (Sandbox Code Playgroud)
我添加此内容的原因是因为我还尝试集成 MudBlazor,这是它正常运行所必需的(至少据我所知)。MS 确实通过文档列出了执行此操作的能力,因此似乎是设置此全局渲染模式的合理选择。
然后我面临的问题是使用 AccountLayout 组件的任何页面,例如登录、注册、重置密码等,因为它在这部分循环:
if (HttpContext is null)
{
// If this code runs, we're currently rendering in interactive mode, so there is no HttpContext.
// The identity pages need to set cookies, so they require an HttpContext. To achieve this we
// must transition back from interactive mode to a server-rendered page.
NavigationManager.Refresh(forceReload: true);
}
Run Code Online (Sandbox Code Playgroud)
由于它是全局设置的,因此它总是会被点击,因此会进入无限的导航循环。我尝试设置帐户布局和/或帐户页面以使用 null、默认、静态等渲染模式,但它们似乎不是有效的选项,我也找不到任何人这样做的示例。
所以我的问题是,有谁知道一种在渲染模式组件上设置默认/静态的方法,或者知道一种让 MudBlazor 在 .net 8 项目中工作而不使用全局交互模式的方法?我显然已经尝试使用 mudblazor 将渲染模式设置为在相关页面上进行交互。