Есть ли какой-либо способ в ASP.NET Web API отмечать исключение, обрабатываемое в ExceptionFilterAttribute?
Я хочу обработать исключение на уровне метода с помощью фильтра исключений и прекратить распространение в глобально зарегистрированный фильтр исключений.
Фильтр, используемый для действия контроллера:
public class MethodExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext context)
{
if (context.Exception is NotImplementedException)
{
context.Response = new HttpResponseMessage(HttpStatusCode.InternalServerError)
{
Content = new StringContent(context.Exception.Message)
};
// here in MVC you could set context.ExceptionHandled = true;
}
}
}
Глобально зарегистрированный фильтр:
public class GlobalExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext context)
{
if (context.Exception is SomeOtherException)
{
context.Response = new HttpResponseMessage(HttpStatusCode.SomethingElse)
{
Content = new StringContent(context.Exception.Message)
};
}
}
}