Disabled Action Handling

When an MVC controller or action is blocked because none of the features it specifies are enabled, a registered IDisabledFeaturesHandler will be invoked. By default, a minimalistic handler is registered which returns HTTP 404. This can be overridden using the IFeatureManagementBuilder when registering feature flags.

public interface IDisabledFeaturesHandler
    Task HandleDisabledFeature(IEnumerable<string> features, ActionExecutingContext context);

Example implementation

public class FeatureNotEnabledHandler : IDisabledFeaturesHandler
    public Task HandleDisabledFeatures(IEnumerable<string> features, ActionExecutingContext context)
        var result = new ViewResult()
            ViewName = "Views/Shared/FeatureNotEnabled.cshtml",
            ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary())

        result.ViewData["FeatureName"] = string.Join(", ", features);

        context.Result = result;

        return Task.CompletedTask;

Then register as singleton in startup.cs

services.AddSingleton<IDisabledFeaturesHandler, FeatureNotEnabledHandler>();

Last updated