0

我正在使用具有 azure 功能的 azure 应用程序配置。所以我想自动刷新键,但我总是将 configurationRefresher 设置为 null。

 builder.AddAzureAppConfiguration(appConfigurationOptions =>
            {
                appConfigurationOptions
                    .Select(ConfigurationKeys.AZURE_FUNC_TEST)
                    .Select(KeyFilter.Any, environment.EnvironmentName)
                    .ConfigureRefresh(refreshOptions =>
                    {
                        refreshOptions.Register(ConfigurationKeys.AZURE_FUNC_TEST, true);
                        refreshOptions.SetCacheExpiration(TimeSpan.FromMinutes(1));
                    })
                    .UseFeatureFlags(flagOptions =>
                    {
                        flagOptions.Label = environment.EnvironmentName;
                        flagOptions.CacheExpirationInterval = TimeSpan.FromSeconds(30);
                    })
                    .GetRefresher();
                configurationRefresher = appConfigurationOptions.GetRefresher();
            },true);
            return builder;

我发现它为空的原因实际上我在帮助类中有上面的代码,然后我将上面的结果传递给启动类,然后在它构建的启动类中。因此我没有得到价值。但是有什么方法可以在启动类和上面的代码中获取值,我希望它在帮助类中

4

1 回答 1

0

AddAzureAppConfiguration方法将委托作为输入。此委托仅在实例Build上调用方法时运行。ConfigurationBuilder

为了configurationRefresher在您的帮助类中初始化实例,您可以调用该ConfigurationBuilder.Build方法来获取IConfiguration. 然后可以在依赖注入容器中注册此实例。

IConfiguration configuration = builder.AddAzureAppConfiguration(appConfigurationOptions =>
{
    appConfigurationOptions
        .Select(ConfigurationKeys.AZURE_FUNC_TEST)
        .Select(KeyFilter.Any, environment.EnvironmentName)
        .ConfigureRefresh(refreshOptions =>
        {
            refreshOptions.Register(ConfigurationKeys.AZURE_FUNC_TEST, true);
            refreshOptions.SetCacheExpiration(TimeSpan.FromMinutes(1));
        })
        .UseFeatureFlags(flagOptions =>
        {
            flagOptions.Label = environment.EnvironmentName;
            flagOptions.CacheExpirationInterval = TimeSpan.FromSeconds(30);
        })
        .GetRefresher();

    configurationRefresher = appConfigurationOptions.GetRefresher();
}, true);

return configuration;
于 2020-11-03T19:47:33.477 回答