在blazor中加载新页面时,我的singleton对象不会保持其状态。
我有这个接口:
public interface IPreLaunchSession
{
bool IsPreLaunchAuthenticated { get; set; }
}
此接口的类
public class PreLaunchSession : IPreLaunchSession
{
public bool IsPreLaunchAuthenticated { get; set; }
public PreLaunchSession()
{
}
}
我将其注册为单一
builder.Services.AddSingleton<IPreLaunchSession,PreLaunchSession>();
然后将其注入页面
@inject Services.IPreLaunchSession PreLaunchSession
在这些注入它的页面中,我测试bool变量并设置它
在代码的另一部分中,我使用NavigationManager重定向。类似这样的东西:
Navigation.NavigateTo("/MyOtherPath");
这似乎可以工作一段时间,但随后<NavLink/>
被用于转到另一个页面,一旦发生这种情况,PreLaunchSession对象似乎就会被重新创建,其中的bool变量会重置为默认值(这是错误的(
这里的任何帮助都将非常有助于理解为什么在进行导航的情况下重新创建单例对象。
在页面重载上查看如何在blazor web程序集中的单例状态容器中持久化值
当刷新应用程序(F5等(时,应用程序基本上关闭并再次打开。
这将导致整个应用程序重新启动,并且持久化的单例对象的所有内存都将丢失。
我最终使用本地存储在完全刷新或选项卡更改之间保持不变。