Microsoft.FeatureManagement.FeatureManager 未检索到带标签的 Azure 应用程序配置功能标志
Azure App Configuration Feature Flag with Label is not retrieved by Microsoft.FeatureManagement.FeatureManager
我开始在我的项目中使用 Azure 应用程序配置服务和功能标志功能。我看到的是,每当我定义一个新功能标志并为标签字段设置一些值时,由于某种原因它不会被 _featureManager.GetFeatureNamesAsync();
检索到。
为了功能标志管理,我创建了一个 FeatureFlagManager
,它看起来像这样:
public class FeatureFlagManager: IFeatureFlagManager
{
private readonly IFeatureManager _featureManager;
public FeatureFlagManager(IFeatureManager featureManager)
{
_featureManager = featureManager;
}
public async Task<IEnumerable<FeatureFlag>> GetFeatureFlags()
{
var featureList = new List<FeatureFlag>();
var featureNames = _featureManager.GetFeatureNamesAsync();
await foreach (var name in featureNames)
{
var isEnabled = await _featureManager.IsEnabledAsync(name);
featureList.Add(new FeatureFlag()
{
FeatureName = name,
IsEnabled = isEnabled
});
}
return featureList;
}
}
REST API 端点:
[HttpGet]
[Route("featureFlags")]
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(IEnumerable<FeatureFlag>))]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task<IActionResult> GetFeatureFlags()
{
using (new Tracer(Logger, $"{nameof(ConfigurationController)}.{nameof(GetFeatureFlags)}"))
{
return Ok(await _featureFlagManager.GetFeatureFlags());
}
}
我在 Azure 配置中定义了 5 个功能标志:
但是每当我调用我的端点以获取所有具有值的特征标志时,定义了标签的标志将被忽略;
它以这种方式工作有什么原因吗?还是我遗漏了什么?
我注意到的另一件事是,一旦您在 Azure 中创建了一个新的功能标志并定义了一个标签,就没有进一步的选项来编辑它。
干杯
在 program.cs 中,您需要将配置告诉 return 带有标签的标志。
if (!string.IsNullOrEmpty(settings["AppConfigConnectionString"]))
{
builder.AddAzureAppConfiguration(options => {
options.Connect(settings["AppConfigConnectionString"]);
options.UseFeatureFlags(opt => opt.Label = "WHAT_EVER_LABEL_YOU_WANT");
});
}
我开始在我的项目中使用 Azure 应用程序配置服务和功能标志功能。我看到的是,每当我定义一个新功能标志并为标签字段设置一些值时,由于某种原因它不会被 _featureManager.GetFeatureNamesAsync();
检索到。
为了功能标志管理,我创建了一个 FeatureFlagManager
,它看起来像这样:
public class FeatureFlagManager: IFeatureFlagManager
{
private readonly IFeatureManager _featureManager;
public FeatureFlagManager(IFeatureManager featureManager)
{
_featureManager = featureManager;
}
public async Task<IEnumerable<FeatureFlag>> GetFeatureFlags()
{
var featureList = new List<FeatureFlag>();
var featureNames = _featureManager.GetFeatureNamesAsync();
await foreach (var name in featureNames)
{
var isEnabled = await _featureManager.IsEnabledAsync(name);
featureList.Add(new FeatureFlag()
{
FeatureName = name,
IsEnabled = isEnabled
});
}
return featureList;
}
}
REST API 端点:
[HttpGet]
[Route("featureFlags")]
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(IEnumerable<FeatureFlag>))]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task<IActionResult> GetFeatureFlags()
{
using (new Tracer(Logger, $"{nameof(ConfigurationController)}.{nameof(GetFeatureFlags)}"))
{
return Ok(await _featureFlagManager.GetFeatureFlags());
}
}
我在 Azure 配置中定义了 5 个功能标志:
但是每当我调用我的端点以获取所有具有值的特征标志时,定义了标签的标志将被忽略;
它以这种方式工作有什么原因吗?还是我遗漏了什么? 我注意到的另一件事是,一旦您在 Azure 中创建了一个新的功能标志并定义了一个标签,就没有进一步的选项来编辑它。 干杯
在 program.cs 中,您需要将配置告诉 return 带有标签的标志。
if (!string.IsNullOrEmpty(settings["AppConfigConnectionString"]))
{
builder.AddAzureAppConfiguration(options => {
options.Connect(settings["AppConfigConnectionString"]);
options.UseFeatureFlags(opt => opt.Label = "WHAT_EVER_LABEL_YOU_WANT");
});
}