OnActionExecutionAsyn c "result = new NotFoundObjectResult" не изменяет результат - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь использовать ActionFilters, чтобы зафиксировать результат в моем вызове api и при необходимости изменить его.

Но, похоже, меняет только объект, который я передаю, а не тип результата. (от OK до BadRequest)

return Ok(await _Data.Remove());

Приведенный выше код в моем контроллере ведет к моему фильтру:

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

        Guid userId = await _data.GetId();
        BaseModel baseModel = (BaseModel)((ObjectResult)resultContext.Result).Value;

        if (baseModel.ApiResponse == ApiResponse.AllGood)
        {
            BaseModel m = _data.GetBaseModel(userId);
            m.ApiResponse = baseModel.ApiResponse;
            resultContext.Result = new OkObjectResult(m);
        }
        else if (baseModel.ApiResponse == ApiResponse.NotFound)
            resultContext.Result = new NotFoundObjectResult(baseModel);
        else
            resultContext.Result = new BadRequestObjectResult(baseModel);


    }

Модель записана правильно, и я могу проверить ее содержимое. И я могу изменить его и передать обратно. Но он всегда возвращается к контроллеру, а затем возвращает «ОК» с новой моделью. Я хочу, чтобы он возвращал BadRequest

Я попытался сделать это:

resultContext.Result = new BadRequestObjectResult(baseModel);

Как видно из приведенного выше кода, но это не работает.

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