【问题标题】:How to prevent action execution in OnActionExecuting of class that is inhereted from the Controller如何防止在从控制器继承的类的 OnActionExecuting 中执行操作
【发布时间】:2017-09-23 01:48:24
【问题描述】:

我需要在操作之前检查请求中的一些条件,并决定是否执行该操作。对于控制器的所有操作,我都需要它。为此,我使基本控制器继承自标准 MVC 控制器类。

public abstract class BaseController : Controller
{
     public override void OnActionExecuting(ActionExecutingContext context)
     {

           //some code
           ...
           if(condition)
           {
             //not executeAction
           }
           base.OnActionExecuting(context);              

}

【问题讨论】:

    标签: c# asp.net-web-api asp.net-core asp.net-core-webapi


    【解决方案1】:

    我很快就找到了答案。您需要设置 Context.Result 属性。 例如。

    public override void OnActionExecuting(ActionExecutingContext context)
    {
            if(context.HttpContext.Request.Headers.ContainsKey("key"))
            {
                context.HttpContext.Response.StatusCode = 401;              
                NotExecuteAction = true;
            }
    
    
    
            if (NotExecuteAction)
            {
                context.Result = NoContent();
            }
    
            base.OnActionExecuting(context);           
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-17
      • 2020-06-01
      • 2016-11-14
      • 2023-02-13
      • 2011-01-12
      • 2016-08-14
      • 2013-02-20
      相关资源
      最近更新 更多