Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何防止从控制器中继承的类的OnActionExecuting中的操作执行_C#_Asp.net Web Api_Asp.net Core_Asp.net Core Webapi - Fatal编程技术网

C# 如何防止从控制器中继承的类的OnActionExecuting中的操作执行

C# 如何防止从控制器中继承的类的OnActionExecuting中的操作执行,c#,asp.net-web-api,asp.net-core,asp.net-core-webapi,C#,Asp.net Web Api,Asp.net Core,Asp.net Core Webapi,我需要在操作前检查请求中的一些条件,并决定是否执行操作。控制器的所有动作都需要这个。为此,我从standart MVC控制器类继承了基本控制器 public abstract class BaseController : Controller { public override void OnActionExecuting(ActionExecutingContext context) { //some code ...

我需要在操作前检查请求中的一些条件,并决定是否执行操作。控制器的所有动作都需要这个。为此,我从standart MVC控制器类继承了基本控制器

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

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

}

我很快找到了答案。您需要设置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);           

}