我将尝试创建将从数据库中获取密钥的自定义配置提供程序。正如手册中所写,我创建了这个提供程序并且它工作正常。所有键都在启动时加载并且一切正常。
但是现在我正在尝试使用 IOptionsSnapshot 并在更改时从数据库重新加载密钥。但什么也没有发生。
谁能告诉我出了什么问题?这是我的代码:
public class EFConfigProvider : ConfigurationProvider
{
private DateTime lastLoaded;
public EFConfigProvider(Action<DbContextOptionsBuilder> optionsAction)
{
OptionsAction = optionsAction;
lastLoaded = DateTime.Now;
ChangeToken.OnChange(
() => Watch(),
() => {
Thread.Sleep(250);
this.Load();
});
}
public new IChangeToken GetReloadToken()
{
return Watch();
}
Action<DbContextOptionsBuilder> OptionsAction { get; }
// Load config data from EF DB.
public override void Load()
{
this.Data.Clear();
var builder = new DbContextOptionsBuilder<ConfigContext>();
OptionsAction(builder);
using (var dbContext = new ConfigContext(builder.Options))
{
// Save Load Fact
dbContext.SaveLoadFact();
// …Run Code Online (Sandbox Code Playgroud)