gpt4 book ai didi

c# - 是否保证调用 ActionFilterAttribute 的所有阶段?

转载 作者:太空狗 更新时间:2023-10-29 21:54:03 24 4
gpt4 key购买 nike

书面形式this answer , 有人问我是否有关于 ActionFilterAttribute 的行为的保证.我无法自信地回答。

特别是 OnActionExecutedOnActionExecutingOnResultExecutedOnResultExecuting 这四种方法都保证是调用通过该属性的所有请求,或者是否存在一个或多个阶段可能不会触发的情况(例如异常、断开的连接等)?

最佳答案

不,他们不能保证被调用。

想想授权过滤器。如果授权失败,您是否希望运行任何操作过滤器?这可能是一个很大的安全漏洞。我相信异常也会停止过滤器的管道,并且从那时起只会执行异常过滤器。

给定以下过滤器:

public class ExampleFilterAttribute : FilterAttribute, IActionFilter
{
public void OnActionExecuted(ActionExecutedContext filterContext)
{
// this code is never reached...
}

public void OnActionExecuting(ActionExecutingContext filterContext)
{
throw new NotImplementedException();
}
}

在以下 Controller 操作上:

[ExampleFilter]
public ActionResult Index()
{
// this code is never reached...
return View();
}

Index() 方法或 OnActionExecuted() 都没有到达,因为 OnActionExecuting() 有异常。

关于c# - 是否保证调用 ActionFilterAttribute 的所有阶段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24333831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com