使用ASP.NET Core MVC,是否可以为包含请求参数的HTTP请求返回BadRequest
的HTTP请求,而该查询参数不是控制器使用的 ?
我不是要针对存在的某些特定查询参数返回错误,而是要拒绝所有包含服务器未解析为有意义的查询参数的请求。
因此,换句话说,没有有效的查询参数是可以的,但对于无效/无法识别的查询参数则不能。
答案 0 :(得分:1)
您可以使用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)