BadRequest根据请求使用不存在的过滤器

时间:2018-06-04 10:44:52

标签: asp.net-web-api asp.net-core-2.0 asp.net-core-middleware

我有一个问题。 如果请求包含不存在的过滤器,ASP.NET核心中是否有一种方法可以在调用REST API控制器时返回BadRequestResult

样本方法定义 public async Task<IActionResult> GetUsers(string cardNr)

Results

1 个答案:

答案 0 :(得分:0)

您可以添加一个操作过滤器,用于检查查询参数是否与操作参数匹配:

public class ValidateQueryFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        var queryKeys = context.HttpContext.Request.Query.Keys;
        var args = context.ActionArguments;
        if (queryKeys.Any(k => !args.ContainsKey(k)))
        {
            context.Result = new BadRequestResult();
            return;
        }
        base.OnActionExecuting(context);
    }
}

在要进行参数验证的操作中添加此属性