Я столкнулся со странным поведением, но я не уверен, что я на правильном пути.
У меня есть контроллер, который переопределяет метод 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. Что мне здесь не хватает?