На самом деле, это просто разные точки в конвейере выполнения MVC.
ExecuteCore вызывается
MvcHandler после самого контроллера
создается экземпляр. К этому моменту MVC
даже не знает о том, как
Контроллер вызовет свое действие.
Вы можете переопределить стандарт
Контроллер ExecuteCore для настройки
его общий процесс выполнения
немного.
OnActionExecuting является полностью
другая история. Это называется во время
действие фильтров при вызове
ControllerActionInvoker. Тем
точка MVC уже знает, что действие
существует, вызывает его, получает все
фильтры (обычно определяются как
атрибуты) и выполняет его в
данный момент общего исполнения
трубопровод (OnActionExecuting,
OnActionExecuted, OnResultExecuting
и так далее).
Это зависит от того, чего именно вы хотите достичь, решая, какую точку расширения использовать.
- Переопределить ExecuteCore в производной
Контроллер для настройки его общего
поведение (не очень часто бывает
в обычном приложении).
- Используйте фильтры для
выполнить некоторые дополнительные задачи, которые
кажется ортогональным к тому, что само действие
должен делать (часто это некоторые
AOP-подобная логика или относится к сеансу базы данных / управлению транзакциями).