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() 重新应用更改。