Adding feature flags to an ASP.NET Core app
March 06, 2022 by Anuraj
Azure AspNetCore DotNetCore DevOps
This post is about Adding feature flags to an ASP.NET Core app.Feature flags (also known as feature toggles or feature switches) are a software development technique that turns certain functionality on and off during runtime, without deploying new code. In this post we will discuss about flags using appsettings.json file. I am using an ASP.NET Core MVC project, you can do it for any .NET Core project like Razor Web Apps, or Web APIs.
First we need to add reference of Microsoft.FeatureManagement.AspNetCore
nuget package - This package created by Microsoft, it will support creation of simple on/off feature flags as well as complex conditional flags. Once this package added, we need to add the following code to inject the Feature Manager instance to the http pipeline.
Next we need to create a FeatureManagement
section in the appsettings.json
with feature with a boolean value like this.
Now we are ready with feature toggle, let us write code to manage it from the controller. In the controller, ASP.NET Core runtime will inject an instance of the IFeatureManager
. And in this interface we can check whether a feature is enabled or not using the IsEnabledAsync
method. So for our feature we can do it like this.
And in the View we can write the following code.
Run the application, the alert will not be displayed. You can change the WelcomeMessage
to true and refresh the page - it will display the bootstrap alert.
This way you can start introducing Feature Flags or Feature Toggles in ASP.NET Core MVC app. As you may already noticed the Feature Management library built on top of the configuration system of .NET Core. So it will support any configuration sources as Feature flags source. Microsoft Azure provides Azure App Configuration service which helps to implement feature flags for cloud native apps.
Happy Programming :)
Copyright © 2024 Anuraj. Blog content licensed under the Creative Commons CC BY 2.5 | Unless otherwise stated or granted, code samples licensed under the MIT license. This is a personal blog. The opinions expressed here represent my own and not those of my employer. Powered by Jekyll. Hosted with ❤ by GitHub