Kolejność wykonywania filtrów jest zdefiniowana według ich typów, ich Order i wreszcie ich Scopes.
Od msdn:
Filtr Kolejność
Filtry uruchamiane w następującej kolejności:
- filtry autoryzacji
- filtry akcji
- filtry Response
- Filtry wyjątków
Na przykład filtry autoryzacji są uruchamiane jako pierwsze, a filtry wyjątków - jako ostatnie. W każdym typie filtru wartość Order określa kolejność wykonywania. W każdym typie i kolejności filtrów wartość wyliczenia zakresu określa kolejność filtrów. To wyliczenie określa następujące wartości filtra Zakres (w takiej kolejności, w jakiej RUN):
- Pierwszy
- Globalny
- Controller
- ostatniej akcji
Na przykład OnActionExecuting (ActionExecutingContext), w którym właściwość Order jest ustawiona na zero, a zakres filtru ustawiony na Pierwsze uruchomienia przed filtrem działań, dla którego właściwość Order jest ustawiona na zero, a zakres filtru na Action. Ponieważ filtry wyjątków działają w odwrotnej kolejności, filtr wyjątków, który ma ustawioną właściwość Order na zero i zakres filtru ustawiony na Pierwszy uruchamia się po filtrze akcji, który ma ustawioną właściwość Order na zero i zakres filtru ustawiony na działanie.
I wreszcie:
kolejność wykonywania filtrów, które mają ten sam typ, porządek i zakres jest niezdefiniowany.
Twoje ValidateAntiForgeryToken i Authorize filtry są tego samego rodzaju, kolejności i zakresu zbyt (zarówno jako niezdefiniowany), więc kolejność wykonywania będą niezdefiniowane. Od tego momentu jedyną opcją jest, jak już wiesz, zdefiniowanie dla obu właściwości Order
.
Dla twojej informacji właściwość FilterScope nie pojawia się w moim IntelliSense, ale po jej wpisaniu w końcu się pojawia.
Zmieniłem twój tytuł. Zobacz, "[Czy w tytułach pytania powinny znaleźć się" znaczniki "?] (Http://meta.stackexchange.com/questions/19190/)", gdzie konsensus brzmi "nie, nie powinien". –