Я пытаюсь создать глобальный атрибут обработки исключений для моих веб-API, написанный на ASP.Net Core, и для этого использую интерфейс IAsyncActionFilter
.Я вызываю ActionExecutionDelegate и затем проверяю исключения в его результате.Когда я сталкиваюсь с исключением, я пытаюсь перенаправить результат или вручную написать в HttpResponse, и именно здесь я сталкиваюсь с реальной проблемой.В следующем примере:
var resultContext = await next();
любой код, который пытается изменить ответ после сбоя этого кода.Я попробовал следующие подходы:
resultContext.Result = new ContentResult() {...}
resultContext.HttpContext.Response.WriteAsync(.....)
Я также пытался сделать то же самое с контекстом действия перед выполнением из любопытства, но, как и ожидалось, это также не удалось.
В случае, если вам нужно знать фактическую сигнатуру метода для OnActionExecutionAsync
метода, она выглядит следующим образом:
Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)