Не удается понять, когда ExceptionFilterAttribute вызывает метод OnException.
Допустим, у меня есть 2 зарегистрированных фильтра:
filters.Add<ExceptionFilter>();
filters.Add<ActionExecutionFilter>();
Где ExceptionFilter переопределяет OnException, а ActionExecutionFilter имеет OnActionExecution и для целей тестирования.Имеет OnResultExecuted.
Что я обнаружил, так это то, что - если я выбрасываю исключение прямо в действие, он вызывает метод OnException, но если я выбрасываю исключение в любой из моих служб, внедряемых зависимостями (см. примеры), то это нене вызывать метод OnExceptionКогда исключение происходит в любом из этих случаев (второй пример), я знаю, что ActionFilter вызовет метод OnResultExecuted, где я могу увидеть исключение, которое переходит прямо к обработчику исключений промежуточного программного обеспечения.
Я хочу знать, почему ExceptionFilter не вызывает какой-либо метод, если в Result есть исключение.
Примеры:
public ActionResult SomeActionMethod()
{
throw new Exception("this one calls OnException");
//Logic
}
public ActionResult SomeActionMethod()
{
var result = this._injectedService.ThrowExceptionMethod(); // --> This one doesn't call OnException if it appears
//Logic
}