IOptionMonitor - 发出更改事件
IOptionMonitor - emit change event
asp.net 核心应用程序从两个来源配置了 IOptions (a) appsetting.json 和 (b) 数据库
我用数据库中的值覆盖了 appsetting.json 中的值。现在我想允许用户为某些预定义设置(保存在数据库中)即时编辑值,例如启用堆栈跟踪以在生产环境中临时调试一些问题。
在应用程序初始化期间,我使用 IconfigureOptions
覆盖数据库中的值,如图 here
public class HostingOptionSetupService : IConfigureOptions<HostingOption>
{
private readonly AppDbContext _dbContext;
public AvailabilitySearchOptionsSetupService(AppDbContext dbContext)
{
this._dbContext = dbContext;
}
public void Configure(AvailabilitySearchOptions options)
{
var json = ConvertToJsonString(_dbContext.AppSetting.ToList());
JsonConvert.PopulateObject(options, json);
}
}
但是现在,当用户更改值并将其保存在数据库中时,我该如何触发重新绑定?如何在数据库更改时使用 IOptionsMonitor?
为了解决这个问题,我在将更改保存到数据库的服务中注入了IConfigureOptions
。然后在 dbContext.SaveChanges
之后调用 configureOptions.Configure()
重新应用更改。
asp.net 核心应用程序从两个来源配置了 IOptions (a) appsetting.json 和 (b) 数据库
我用数据库中的值覆盖了 appsetting.json 中的值。现在我想允许用户为某些预定义设置(保存在数据库中)即时编辑值,例如启用堆栈跟踪以在生产环境中临时调试一些问题。
在应用程序初始化期间,我使用 IconfigureOptions
覆盖数据库中的值,如图 here
public class HostingOptionSetupService : IConfigureOptions<HostingOption>
{
private readonly AppDbContext _dbContext;
public AvailabilitySearchOptionsSetupService(AppDbContext dbContext)
{
this._dbContext = dbContext;
}
public void Configure(AvailabilitySearchOptions options)
{
var json = ConvertToJsonString(_dbContext.AppSetting.ToList());
JsonConvert.PopulateObject(options, json);
}
}
但是现在,当用户更改值并将其保存在数据库中时,我该如何触发重新绑定?如何在数据库更改时使用 IOptionsMonitor?
为了解决这个问题,我在将更改保存到数据库的服务中注入了IConfigureOptions
。然后在 dbContext.SaveChanges
之后调用 configureOptions.Configure()
重新应用更改。