Как остановить конвейер запросов на уровне actionfilter, используя ASP.NET CORE 2.1? - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь перехватить все ошибки 4xx, которые возникают во время обработки запроса с использованием ядра 2 asp.net.

Вот мой поток:

HTTP-запрос -> Промежуточное программное обеспечение ->OnActionExecutionAsync (Фильтр действий) -> Назад к промежуточному программному обеспечению

Теперь здесь, во время метода OnActionExecutionAsync, я хочу обработать ответ и проверить ошибки 4xx, установить все детали с помощью класса, сериализовать его и отправить егообратно к потребителю вместо передачи запроса обратно промежуточному программному обеспечению.

Вот подробности кода:

public class ValidationProblemDetailsResult : IAsyncActionFilter
    {

        public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
        {
            var responseContext = await next();

            if (responseContext.Result is ObjectResult result && result is BadRequestObjectResult)
            {
                var problemDetails = new ValidationProblemDetails
                {
                    Status = result.StatusCode,
                    Title = "Request Validation Error",
                    Instance = $"urn:TestApplication:badrequest:{Guid.NewGuid()}"                   
                };

                responseContext.Canceled = false;

                responseContext.HttpContext.Response.WriteJson(problemDetails, "application/problem+json");
            }

        }
    }

Может кто-нибудь помочь мне узнать, как решить эту проблему?

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