小编wgh*_*ost的帖子

ChangeToken.OnChange 不会触发自定义配置提供程序

我将尝试创建将从数据库中获取密钥的自定义配置提供程序。正如手册中所写,我创建了这个提供程序并且它工作正常。所有键都在启动时加载并且一切正常。

但是现在我正在尝试使用 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)

c# configuration asp.net-core

3
推荐指数
1
解决办法
3786
查看次数

标签 统计

asp.net-core ×1

c# ×1

configuration ×1