拒绝包含未知查询参数的请求?

使用 ASP.NET Core MVC,有没有办法返回BadRequest包含控制器使用的查询参数的 HTTP 请求?

我不是要针对存在的某些特定查询参数返回错误,我想拒绝所有包含服务器未解析为有意义的查询参数的请求。

因此,换句话说,可以缺少有效的查询参数,但不能存在无效/无法识别的查询参数。


缥缈止盈
浏览 72回答 1
1回答

holdtom

你可以使用action filter来获取动作parameters和请求的查询字符串queryParameters。然后判断查询参数是否都在动作中使用。public override void OnActionExecuting(ActionExecutingContext context)    {        var parameters = context.ActionDescriptor.Parameters;        var queryParameters = context.HttpContext.Request.Query;        if (queryParameters.Select(kvp => kvp.Key).All(queryParameter => parameters.Any(p => p.Name == queryParameter)))        {            base.OnActionExecuting(context);        }        else        {            context.Result = new BadRequestObjectResult("Querystring does not match");        }    }在控制器中:[TypeFilter(typeof(TestQueryActionFilter))]public void MyAction(int id, string name)
打开App,查看更多内容
随时随地看视频慕课网APP