在Blazor服务器中设置appsettings.json"文件非常适合存储全局可访问的变量。但是,如果这些需要在运行时更改呢?例如,假设我们有一个"IsMaintenanceMode"的存储值。
鉴于;
-
"IsMaintenanceMode"可能需要设置为"true";在运行时(然后将用户引导到维护页面)
-
如果我们使用中间件来检查这个值是否为True(即将用户重定向到维护页面),那么我们就不希望每次都在每个请求中查找这个变量-例如从数据库中。
传统上,这可能是使用应用程序变量完成的,但我只是不确定Blazor的最佳方法。
所以我的问题是-以一种可以"cached"的方式存储这个值的最佳方式是什么?为了方便查找,但也很容易在运行时更改?
谢谢你的建议。
StateServer.cs
public class StateServer {
public bool IsMaintenanceMode {get; set;}
}
添加到Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<StateServer >();
}
Component.razor//可以是布局,主页等
@inject StateServer _stateServer
@if (_stateServer.IsMaintenanceMode){
<Warning />
}
else {
<Body />
}
@code {
}
或者,您可以在其中一个页面生命周期事件中检查该值,并导航到您喜欢的任何页面。