Управление функциями, переключение функций, флаги функций, не работающие с хранилищем конфигурации приложений Azure
Я пытаюсь добавить флаги функций в консольное приложение.net core 2.2. Флаги функций определены в хранилище конфигурации приложений Azure.
Когда флаги функций определены в файле appsettings.json, я столкнулся с проблемой, но заставил ее работать. Полный консольный проект определен в моем вопросе SO здесь. Проблема не в этом.
Я пытаюсь следовать руководству, и это сводит меня с ума. Проблема здесь в том, что это руководство не простое. Это веб-приложение, поверх которого он использовал инструмент секретного менеджера.
Я просто не мог заставить веб-приложение работать, как описано в руководстве, поэтому я пытаюсь сначала создать простое консольное приложение, но пока не смог добиться успеха с хранилищем конфигурации приложений Azure.
Вот консольное приложение, которое пока не работало. Любая помощь очень ценится.
Следующие пакеты добавляются в консольный проект.
- https://www.nuget.org/packages/Microsoft.Extensions.Configuration.AzureAppConfiguration/2.0.0-preview-009470001-1371
- https://www.nuget.org/packages/Microsoft.Extensions.Configuration.Json/2.1.1
- https://www.nuget.org/packages/Microsoft.Extensions.DependencyInjection/2.1.1
- Microsoft.FeatureManagement
using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.FeatureManagement;
using Microsoft.FeatureManagement.FeatureFilters;
using Microsoft.Extensions.Configuration.AzureAppConfiguration;
namespace ConfigurationConsoleApp
{
class Program
{
static async Task Main(string[] args)
{
var builder = new ConfigurationBuilder();
var azureConnectionString = "<APP_CONFIGURATION_CONNECTION_STRING>";
//builder.AddAzureAppConfiguration(options =>
//{
// options.Connect(azureConnectionString).UseFeatureFlags();
//});
builder.AddAzureAppConfiguration(azureConnectionString);
var config = builder.Build();
Console.WriteLine(config["TestApp:Settings:Message"] ?? "Hello world!");
var configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
var services = new ServiceCollection();
//services.AddSingleton<IConfiguration>(configuration).AddFeatureManagement().AddFeatureFilter<PercentageFilter>().AddFeatureFilter<AccountIdFilter>();
services.AddSingleton<IConfiguration>(config).AddFeatureManagement();//.AddFeatureFilter<PercentageFilter>().AddFeatureFilter<AccountIdFilter>();
const string FeatureName = "Beta";
using (ServiceProvider serviceProvider = services.BuildServiceProvider())
{
var featureManager = serviceProvider.GetRequiredService<IFeatureManager>();
var enabled = await featureManager.IsEnabledAsync(FeatureName);
Console.WriteLine($"The {FeatureName} feature is {(enabled ? "enabled" : "disabled")} ");
}
}
}
}
1 ответ
Вы ознакомились с примерами приложений в репозитории Microsoft.FeatureManagement GitHub?
https://github.com/microsoft/FeatureManagement-Dotnet/tree/master/examples/FeatureFlagDemohttps://github.com/microsoft/FeatureManagement-Dotnet/tree/master/examples/ConsoleApp
Ваш код выглядит так, как будто он должен работать. Это не будет работать, если в экземпляре конфигурации приложения Azure с именем "Бета" не будет создан флаг функции.