Skip to content

Commit f0eec34

Browse files
committed
Add feature flag support and update related configurations
- Implemented feature flag management in HomeController and Index view. - Updated Program.cs to include feature management services and configuration. - Enhanced setup scripts to create and enable a 'Beta' feature flag.
1 parent 4719543 commit f0eec34

File tree

5 files changed

+46
-3
lines changed

5 files changed

+46
-3
lines changed

21-azure-app-configuration/Controllers/HomeController.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,24 @@
11
using System.Diagnostics;
22
using Microsoft.AspNetCore.Mvc;
3+
using Microsoft.FeatureManagement;
34
using SampleAppConfigAsp.Models;
45

56
namespace SampleAppConfigAsp.Controllers;
67

78
public class HomeController : Controller
89
{
910
private readonly ILogger<HomeController> _logger;
11+
private readonly IFeatureManager _featureManager;
1012

11-
public HomeController(ILogger<HomeController> logger)
13+
public HomeController(ILogger<HomeController> logger, IFeatureManager featureManager)
1214
{
1315
_logger = logger;
16+
_featureManager = featureManager;
1417
}
1518

16-
public IActionResult Index()
19+
public async Task<IActionResult> Index()
1720
{
21+
ViewData["BetaFeatureEnabled"] = await _featureManager.IsEnabledAsync("Beta");
1822
return View();
1923
}
2024

21-azure-app-configuration/Program.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Azure.Identity;
22
using Microsoft.Extensions.Configuration;
33
using Microsoft.Extensions.Configuration.AzureAppConfiguration;
4+
using Microsoft.FeatureManagement;
45

56
var builder = WebApplication.CreateBuilder(args);
67
var appConfigEndpoint = builder.Configuration["AzureAppConfiguration:Endpoint"];
@@ -13,6 +14,10 @@
1314
builder.Configuration.AddAzureAppConfiguration(options =>
1415
{
1516
options.Connect(new Uri(appConfigEndpoint), new DefaultAzureCredential())
17+
.UseFeatureFlags(featureFlagOptions =>
18+
{
19+
featureFlagOptions.SetRefreshInterval(TimeSpan.FromSeconds(5));
20+
})
1621
.ConfigureRefresh(refresh =>
1722
{
1823
refresh.Register("TestApp:Settings:Sentinel", refreshAll: true)
@@ -23,6 +28,7 @@
2328
// Add services to the container.
2429
builder.Services.AddControllersWithViews();
2530
builder.Services.AddAzureAppConfiguration();
31+
builder.Services.AddFeatureManagement();
2632
builder.Services.Configure<Settings>(builder.Configuration.GetSection("TestApp:Settings"));
2733

2834
var app = builder.Build();

21-azure-app-configuration/Views/Home/Index.cshtml

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,29 @@
99
color: @Configuration["TestApp:Settings:FontColor"];
1010
font-size: @Configuration["TestApp:Settings:FontSize"]px;
1111
}
12+
.feature-flag {
13+
margin-top: 20px;
14+
padding: 10px;
15+
border-radius: 5px;
16+
display: inline-block;
17+
}
18+
.feature-enabled {
19+
background-color: #d4edda;
20+
color: #155724;
21+
border: 1px solid #c3e6cb;
22+
}
23+
.feature-disabled {
24+
background-color: #f8d7da;
25+
color: #721c24;
26+
border: 1px solid #f5c6cb;
27+
}
1228
</style>
1329

14-
<h1>@Configuration["TestApp:Settings:Message"]</h1>
30+
<h1>@Configuration["TestApp:Settings:Message"]</h1>
31+
32+
@if (ViewData["BetaFeatureEnabled"] is true)
33+
{
34+
<div class="feature-flag feature-enabled">
35+
<strong>Beta Feature:</strong> Enabled
36+
</div>
37+
}

21-azure-app-configuration/setup.ps1

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ foreach ($entry in $settings.GetEnumerator())
3737
az appconfig kv set --name $AppConfigName --key $entry.Key --value $entry.Value -y --only-show-errors --output none | Out-Null
3838
}
3939

40+
# Create feature flag
41+
az appconfig feature set --name $AppConfigName --feature Beta --description "Beta feature flag for testing" -y --only-show-errors --output none | Out-Null
42+
az appconfig feature enable --name $AppConfigName --feature Beta -y --only-show-errors --output none | Out-Null
43+
Write-Host "Created and enabled 'Beta' feature flag"
44+
4045
$endpoint = "https://$AppConfigName.azconfig.io"
4146
dotnet user-secrets init --project $projectPath | Out-Null
4247
dotnet user-secrets set --project $projectPath 'AzureAppConfiguration:Endpoint' $endpoint | Out-Null

21-azure-app-configuration/setup.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ az appconfig kv set --name "${acName}" --key TestApp:Settings:FontSize --value 4
2222
az appconfig kv set --name "${acName}" --key TestApp:Settings:Message --value "Data from Azure App Configuration" -y --only-show-errors -o none
2323
az appconfig kv set --name "${acName}" --key TestApp:Settings:Sentinel --value 1 -y --only-show-errors -o none
2424

25+
# Create feature flag
26+
az appconfig feature set --name "${acName}" --feature Beta --description "Beta feature flag for testing" -y --only-show-errors -o none
27+
az appconfig feature enable --name "${acName}" --feature Beta -y --only-show-errors -o none
28+
echo "Created and enabled 'Beta' feature flag"
29+
2530
endpoint="https://${acName}.azconfig.io"
2631
dotnet user-secrets init --project "${project_path}" >/dev/null
2732
dotnet user-secrets set --project "${project_path}" "AzureAppConfiguration:Endpoint" "${endpoint}" >/dev/null

0 commit comments

Comments
 (0)