Проблема обработки исключений службы REST Web Api

Я создал простой REST-сервис с использованием веб-API ASP.NET.
Я связал один из методов моего контроллера с пользовательским атрибутом ActionFilterAttribute, переопределив его OnActionExecuted. В фильтре действий я использую ответ, который должен быть отправлен (actionExecutedContext.Response).
Все приложение связано с пользовательским ExceptionFilterAttribute, переопределяющим OnException, используемое для регистрации ошибок.

Теперь о проблеме - когда возникает исключение из метода контроллера, я ожидал одного из двух:
1. Сначала будет запущено OnException, затем OnActionExcuted с соответствующим ответом.
2. Вызывается только OnExcpetion, поскольку действие еще не завершено.

На самом деле происходит то, что OnActionExecuted вызывается, ответ является нулевым, в результате возникает другое исключение (на этот раз нулевая ссылка), которое перехватывается в OnException и регистрирует неправильное исключение.

Мои вопросы:
1. Почему OnActionExecuted вызывается, если возникла исключительная ситуация? Не следует ли сначала вызывать OnException? Объяснение будет оценено.
2. Я понимаю, что OnActionExecuted следует изменить, как это правильно сделать? В общем, нужно ли перед тем, как что-либо делать, проверять, что actionExecutedContext.Response или actionExecutedContext.Exception не являются нулевыми (кроме очевидной проверки в методах OnException)? Я основал свой код в действиях атрибутов, чтобы всегда был ответ, но, очевидно, нет.

Любая помощь будет оценена, спасибо заранее:)!

0 ответов

Другие вопросы по тегам