Conditionally disable ASP.NET MVC Controller

后端 未结 3 900
终归单人心
终归单人心 2020-12-11 15:22

What is the best way to disable ASP.NET MVC controller conditionally?

I want to have an access to the controller actions if some value in web.config is \"true\" and

3条回答
  •  [愿得一人]
    2020-12-11 15:48

    Cross posting from: https://stackoverflow.com/a/43044667/257470

    My solution for disabling ApiController controller:

    • Uses WebConfig AppSettings config flag instead of (#if DEBUG)
    • Before method is invoked ExecuteAsync intercepts the invocation and checks feature toggle (feature flag);
    • if feature is disabled, returns HTTP 410 GONE
    • If it's common for many controllers, move the code to controller's base class

    The code:

    public class TestController : ApiController
    {
        public override Task ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)
        {
            var featureFlag = Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["EnableTest"]);
    
            if (featureFlag == false)
            {
                return Task.FromResult(new HttpResponseMessage(HttpStatusCode.Gone));
            }
    
            return base.ExecuteAsync(controllerContext, cancellationToken);
        }
    

提交回复
热议问题