Фильтры GlobalFilterCollection запускаются до фильтров ControllerInstanceFilterProvider

Я столкнулся со странным поведением, но я не уверен, что я на правильном пути.

У меня есть контроллер, который переопределяет метод OnExceptionбазового класса Controller.

public class ControllerFiltersController : Controller {

    public ActionResult Index() {

        throw new NotImplementedException();
    }

    protected override void OnException(ExceptionContext filterContext) {

        Trace.TraceInformation(
            "ControllerFiltersController Exception: " + DateTime.Now.ToString("hh:mm:ss.fff")
        );
    }
}

У меня также есть пользовательский ExceptionFilter следующим образом:

public class HandleErrorCustom : IExceptionFilter {

    public void OnException(ExceptionContext filterContext) {

        Trace.TraceInformation(
            "HandleErrorCustom Exception Message: " + DateTime.Now.ToString("hh:mm:ss.fff")
        );
    }
}

Затем я зарегистрировал его как глобальный фильтр:

public static void RegisterGlobalFilters(GlobalFilterCollection filters) {

    filters.Add(new HandleErrorCustom());
}

Я ожидал, что фильтр экземпляра контроллера будет запускаться до глобального фильтра, фильтров, предоставляемых ControllerInstanceFilterProvider, — это Int32.MinValue, а их объем — FilterScope.First.

Как также поясняется здесь:Расположение службы ASP.NET MVC 3,Часть 4 :Фильтры

Но результат отличается:

Информация о iisexpress.exe :0 :HandleErrorCustom Exception Message :06 :56 :49.972

Информация о iisexpress.exe :0 :ControllerFiltersController Exception :06 :56 :49,974

Это приложение ASP.NET MVC 4, и мне неизвестны какие-либо изменения, влияющие на поведение упорядочивания фильтров ASP.NET MVC 3. Что мне здесь не хватает?

7
задан tugberk 19 April 2012 в 16:12
поделиться