の順序によってチェック/管理する必要があります。
public class InvalidQueryStringRejectorAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
var arguments = actionContext.ActionArguments.Keys;
var queryString = actionContext.Request.GetQueryNameValuePairs()
.Select(q => q.Key);
var invalidParams = queryString.Where(k => !arguments.Contains(k));
if (invalidParams.Any())
{
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.BadRequest, new
{
message = "Invalid query string parameters",
parameters = invalidParams
});
}
}
}
フィルタは、メソッドのシグネチャと一致しないクエリ文字列パラメータを持つすべての要求を拒否すること。
[InvalidQueryStringRejector]
public IHttpActionResult Get(string value)
{
return Ok(value);
}
またはあなたのHttpConfiguration
オブジェクト内に登録することにより、任意のアクションに適用されます:
config.Filters.Add(new InvalidQueryStringRejectorAttribute());
これは完全に動作します! – Mat