C# 如何防止从控制器中继承的类的OnActionExecuting中的操作执行
我需要在操作前检查请求中的一些条件,并决定是否执行操作。控制器的所有动作都需要这个。为此,我从standart MVC控制器类继承了基本控制器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 ...
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);
}