ExceptionFilterAttribute.OnException не вызывается, когда исключение выдается из службы - PullRequest
0 голосов
/ 29 сентября 2018

Не удается понять, когда 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
}

1 Ответ

0 голосов
/ 29 сентября 2018

Решил эту загадку.Проблема не в ядре .net или атрибуте исключений вообще.Я использую перехватчики для экземпляров dataManager & dataAccess и, следовательно, после того, как я выбрасываю исключение в одном из этих экземпляров, перехватчик оборачивает эту ошибку и возвращает ее как нормальный результат, что вызывает вызов OnResultExecuted с исключением в нем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...