使用 Azure 应用程序配置强制更新配置

Force update Configuration using Azure App Configuration

我想为我的微服务 (MS)(具有相同配置的相同类型的多个实例)使用动态和中央配置策略,并且我正在使用 Azure 应用程序配置 (AAC)。我想尽量减少对 AAC 的调用,所以当一个 MS 启动时,我想从 AAC 读取配置并保留它直到进行更改,即我不希望每次调用 Configuration["Env:service:some-param"] 都会生成调用AAC。我已经通过 eventgrid 和 servicebus-events 解决了通知部分,因此所有 MS 都会收到已进行更改的通知,但我真的找不到任何好的解决方案来强制按需从 AAC 重新加载配置。 在 Program.cs 中,我通过以下方式连接 AAC:

config.AddAzureAppConfiguration(options =>
                       options
                          .Connect(connection)
                          .ConfigureRefresh(refresh =>
                          {
                              refresh.Register(environment + ":" + service + ":<Some-param>",true)
                                     .SetCacheExpiration(TimeSpan.FromDays(1));
                              _environmentRefresher = options.GetRefresher();
                          })

为什么我设置 SetCacheExpiration(TimeSpan.FromDays(1)) 是因为我不想对 AAC 进行不必要的调用,我认为如果我获取刷新器并在事件发生时触发它配置将被重新加载但是情况似乎并非如此,因为 SetCacheExpiration 似乎覆盖了所有内容,所以我的问题是......给定的场景在 .net 核心中无法解决,还是我可以通过某种方式实现这一点?

如果您想使用基于事件的刷新模型强制缓存过期,请务必调用 IConfigurationRefresher.SetDirty。否则你会遇到你提到的缓存尚未失效的问题,刷新调用将是空操作。