根据这个documentation for ASP.NET Filters过滤器按以下顺序运行:
- 授权过滤器
- Action 过滤器
- 响应过滤器
- 异常过滤器
在每个过滤器类型中都有一个过滤器 Order 指定运行顺序。
到目前为止是有道理的……但后来就变得奇怪了。
还有一种在每个过滤器类型和顺序中排序的进一步方法,它表示为以下值的枚举:
public enum FilterScope
{
First = 0,
Global = 10,
Controller = 20,
Action = 30,
Last = 100,
}
Global、Controller 和 Action 在 Action 过滤器的运行顺序中有什么意义?
例如:
如果我有两个 Action Filter,它们的运行顺序都是 1,并且 FilterScope
分别是 Controller 和 Action。
除了在另一个之前排序之外,Controller
和 Action
对任何事物有什么影响?
更奇怪
According to this FilterScope
为过滤器提供第三级排序。 Controller
、Global
或 Action
是如何为过滤器排序的,它绝不会仅限于在 Controller< 上使用
、Action
并且不一定在全局范围内应用?它不是订单的描述。
此外,如果它确实提供了三级过滤,为什么它仅限于 5 个选项?
最佳答案
Filter
对象,实际具有 Scope
的对象属性,是根据使用情况构建的 - 当您将过滤器添加到全局应用程序过滤器时,一个 Filter
对象是用 Scope
构造的的 Global
.同样,当从 Controller 和操作收集过滤器属性时,Filter
对象是使用 Controller
的范围构造的和 Action
, 分别。
我不完全确定 Filter
用Scope
的 First
或 Last
实际上被创建了。
指定这些规则是为了说明如果您在全局级别和操作级别使用相同的 Order
声明过滤器,将如何应用打破平局。 value - 这比在同一级别声明的过滤器更值得关注,您需要手动确保每个过滤器使用唯一的 Order
(如果您关心订购)。
关于c# - Filter Scope 的作用是什么?为什么会有奇怪的名字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32049747/