了解ActionFilterAtribute中的ActionExecutingContext.Result
本文关键字:Result ActionExecutingContext 中的 ActionFilterAtribute 了解 | 更新日期: 2023-09-27 18:20:44
我最近读到这段代码,它使MVC Web API允许CORS(交叉资源共享)。我知道ActionFilterAtrribute
使它成为一个过滤器,但我不确定这个类中发生了什么:AllowCORS
。
public class AllowCORS : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if(filterContext.HttpContext.Request.HttpMethod == "OPTIONS")
{
filterContext.Result = new EmptyResult();
}
else
{
base.OnActionExecuting(filterContext);
}
}
}
所以基本上,如果我们收到的请求方法是HttpOPTIONS
,我们会做一些我在这种情况下不太理解的事情。否则,我们做一些我也不确定的其他事情?
有人会帮忙详细说明这里到底发生了什么吗?
在ActionFilterAttribute
类中,OnActionExecuting
在放置ActionFilterAttribute
属性的控制器操作执行之前执行。
如果您覆盖OnActionExecuting
函数,它允许您在执行控制器操作之前执行任何特定的代码。在您的情况下:
if(filterContext.HttpContext.Request.HttpMethod == "OPTIONS")
{
filterContext.Result = new EmptyResult();
}
如果请求是HttpOPTIONS
,那么在执行控制器操作之前,代码会向客户端返回一个空响应。
如果请求是其他类型的:
else
{
base.OnActionExecuting(filterContext);
}
它将允许控制器操作执行并向客户端返回响应。