缓存过期后不更新 Azure功能标志

我们有 FeatureFlag:IsServiceNeeded,在 Azure 应用程序配置的功能管理器中没有设置标签。我们通过设置缓存间隔在内置方法 AddAzureAppConfiguration 中使用

我们有 FeatureFlag:IsServiceNeeded,在 Azure 应用程序配置的功能管理器中没有设置标签。我们通过设置缓存间隔在内置方法 AddAzureAppConfiguration 中使用

我们正在使用 Azure 应用程序配置的.net core 3.1 Web API 和功能管理器。

我们在应用程序初始化期间启用了 IsServiceNeeded,几个小时后,我们禁用了 IsServiceNeeded。我们等待一整天,但没有看到差异,因为返回 true 而不是 false。由于我们如何在 program.cs 文件中配置它,我们期望它每 3 分钟更新一次。

await _featureManager.IsEnabledAsync("IsServiceNeeded")

如果你看到有什么奇怪的地方,请告诉我。提前感谢,

这是我们正在使用的代码片段。

Program.cs 文件

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }
    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration((context, config) =>
            {
                var configurationRoot = config.Build();
                var appConfigConString = configurationRoot["AppConfigConnectionString"];
                config.AddAzureAppConfiguration(options => options.Connect(appConfigConString).UseFeatureFlags(featureFlagOptions => {
                    **featureFlagOptions.CacheExpirationInterval = TimeSpan.FromMinutes(3);**
                }));
            })
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}

Startup.cs 文件

public class Startup
{
    public IConfiguration Configuration { get; }
    public string ContentRootPath { get; set; }
    
    public Startup(IWebHostEnvironment env, IConfiguration configuration)
    {
        Configuration = configuration;
    }
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddHsts(options =>
        {
            options.Preload = true;
            options.IncludeSubDomains = true;
            options.MaxAge = TimeSpan.FromDays(365);
        });
        var conf = Configuration.GetSection("AppSettings").Get<Config>();
        services.Configure<Config>(Configuration.GetSection("AppSettings"));
        services.AddSingleton<IAppSettings>(c => conf);**
        services.AddScoped<IProcessHandler, ProcessHandler>();
        **services.AddFeatureManagement();**
    }
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseHsts();
        app.UseHttpsRedirection();
        app.UseHttpStatusCodeExceptionMiddleware();
        app.UseHttpsRedirection();
        app.UseRouting();
        app.UseAuthentication();
        app.UseAuthorization();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }
        private static void LoadMediatorHandlers(IServiceCollection services)
        {
            foreach (var assembly in Assembly
                                     .GetEntryAssembly()
                                     .GetReferencedAssemblies()
                                     .Select(Assembly.Load)
                                     .Where(name => (name.FullName.Contains("Queries") || name.FullName.Contains("Commands"))))
            {
                services.AddMediatR(assembly);
            }
            services.AddMediatR(typeof(Startup));
            services.AddScoped<IMediator, Mediator>();
        }   
    }

功能标志的应用:

public class ProcessHandler : IProcessHandler
{
    private readonly IFeatureManager _featureManager;
    public ProcessHandler(IFeatureManager featureManager)
    {
        _featureManager = featureManager;
    }
    public async Task<ClassA> ProcessXyz()
    {
        if (`await _featureManager.IsEnabledAsync("IsServiceNeeded")`)
        {
            return new ClassA();
        }
        
        return null;
    }   
}

请注意:我刚刚添加了所需的代码,并替换了安全问题的实际名称。

提前谢谢

1

缺少的是从 Azure 应用配置刷新功能标志(和配置)的中间件。

打开您的startup.cs,在添加

public void ConfigureServices(IServiceCollection services)
{
    // ...
    services.AddAzureAppConfiguration();
    services.AddFeatureManagement();
}

然后在添加

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // ...
    app.UseAzureAppConfiguration();
}

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(490)
Spotify使用邮件和密码 python登录
上一篇
R nls:将曲线拟合到数据
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(4条)