Open
Description
I'm trying to use IOptionsMonitor for dinamic configuration with Azure AppConfiguration, the values are loaded correctly on starting the application. After started, when I update any settings on Azure App Configuration portal, the settings values keep the same.
I've already used App Configuration in a function and it works properly, but nowadays I'm using WebHostedService DotNetCore.
public static void Main()
{
var host = CreateHostBuilder().Build();
host.Run();
}
public static IHostBuilder CreateHostBuilder()
{
var host = Host.CreateDefaultBuilder()
.ConfigureAppConfiguration((hostingContext, config) =>
{
var configuration = config.Build();
config.AddAzureAppConfiguration(options =>
{
options.Connect(configuration["ConnectionStrings:AppConfiguration"])
.UseFeatureFlags()
.ConfigureRefresh(refresh =>
{
refresh.Register("RetryPolicyConfig:IntervalSecs", true);
refresh.Register("RetryPolicyConfig:RetryCount", true);
refresh.SetCacheExpiration(new TimeSpan(30, 0, 0));
});
_refresher = options.GetRefresher();
});
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.ConfigureServices((w, s) => { s.AddSingleton(_refresher); });
});
return host;
}
the IOptionsMonitor is inject in service class
private readonly RetryPolicyConfig retryPolicyConfig;
private readonly IConfigurationRefresher _refresher;
public Service(IOptionsMonitor<RetryPolicyConfig> configuration, IConfigurationRefresher refresher)
{
this.configuration = configuration;
retryPolicyConfig = configuration.CurrentValue;
}
public async Task Execute(Commmand command)
{
try
{
await _refresher.TryRefreshAsync();
var retryPolicy = retryPolicyConfig.RetryCount;
var secs = retryPolicyConfig.IntervalExponentialEachRetryInSecs; //nothing happens here after updating setting by AppConfiguration
Any idea?