gpt4 book ai didi

c# - 全局 ASP.NET Web API 过滤器是否总是按顺序执行?

转载 作者:行者123 更新时间:2023-11-30 23:33:40 30 4
gpt4 key购买 nike

我添加了一些全局 ASP.NET Web API 过滤器(其中 config 是我的 System.Web.Http.HttpConfiguration:

config.Filters.Add(new SomeFilter());
config.Filters.Add(new AnotherFilter());
config.Filters.Add(new YetAnotherField());

这些过滤器总是按照上面的顺序执行吗?我从来没有经历过它们在测试时没有按顺序执行,但我想确定是因为我注意到我们的日志中有一些异常,如果它们没有按顺序执行可能会发生(不过也可能是另一个原因)。

HttpFilterCollection 文档没有具体说明它保留顺序(虽然 Add 方法文档确实说明它添加一个项目到集合的末尾)

最佳答案

基于WebApi和Linq源码,过滤器执行顺序为:

  1. 身份验证过滤器
  2. 授权过滤器
  3. ActionFilters,基于范围
    • 全局
    • 控制者
    • 行动
  4. 异常过滤器

相同类型和范围的过滤器将按照它们添加到 FilterCollection 的相同顺序执行。

例子:

config.Filters.Add(new ActionFilterAttribute1());
config.Filters.Add(new AuthenticationFilter());
config.Filters.Add(new ActionFilterAttribute2());

执行顺序将是

  1. 身份验证过滤器
  2. ActionFilterAttribute1
  3. ActionFilterAttribute2

关于c# - 全局 ASP.NET Web API 过滤器是否总是按顺序执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33828051/

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