Возвращает из OnActionExecutionAsync без выполнения действия в ядре asp.net - PullRequest
0 голосов
/ 26 февраля 2019

Здесь я хочу вернуться к custom action filter без выполнения controller action method в asp.net core WEB API.

Ниже приведено мое требование с примером code.

public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
    bool valid=SomeMethod();
    if(valid)
        //executes controller action
    else
        //returns without executing controller action with the custom message (if possible)
}

Я искал и нашел несколько связанных вопросов и ответов, но у меня ничего не вышло.

Нашел это await base.OnActionExecutionAsync(context, next);, но пропускает оставшуюся логику filters и непосредственно выполняет1017 * так не сработало для моего сценария.

Ответы [ 2 ]

0 голосов
/ 01 марта 2019
public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
    bool valid=SomeMethod();
    if(valid)
         next();
    else
        context.Result = new BadRequestObjectResult("Invalid!");
}
0 голосов
/ 26 февраля 2019

Вы можете замкнуть накоротко, установив context.Reult к любой действительной реализации IActionResult.Приведенный ниже пример просто возвращает ошибку в виде простого текста.Если вам нужно какое-то причудливое сообщение об ошибке, вы можете использовать View().

public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
    {
        bool valid=SomeMethod();
        if(valid)
             next();
        else
            context.Result = Content("Failed to validate")
    }
...