我正在使用Asp.NET OData v7.0(Microsoft.AspNet.OData)向我们的旧版Web API添加OData支持。 我试图通过覆盖EnableQueryAttribute来覆盖默认的Filter验证器:
public class MyEnableQueryAttribute : EnableQueryAttribute
{
public override void ValidateQuery(HttpRequestMessage request, ODataQueryOptions queryOptions)
{
if (queryOptions.Filter != null)
{
queryOptions.Filter.Validator = new MyFilterValidator(new DefaultQuerySettings());
}
base.ValidateQuery(request, queryOptions);
}
}
public class MyFilterValidator : FilterQueryValidator
{
public override void Validate(...)
{
// my custom validation code
}
}
[MyEnableQuery]
public async Task<IEnumerable> Get(ODataQueryOptions<Product> queryOptions)
但是在调试时,我看到调用Get()方法后调用了valiator方法。我希望在调用操作之前应先调用验证器。我的代码有什么问题吗?