Я пытаюсь использовать 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);
Как видно из приведенного выше кода, но это не работает.