[英]Enabling OData Filtering on WebApi 2 ASP.NET 4.6.1
我有一个在 ASP.NET 4.6.1
上运行的旧版 WebApi,我需要能够启用对端点的 OData fitler 支持。
However, when debugging the controller through Postman, the ODataQueryOptions<Job> searchOptions
on the controller is always null.
我的查询字符串示例是;
https://localhost:44310/api/job/find/odata?Filter=[["Title"%2C"contains"%2C"T"]]&Skip=1&Top=5
我添加了System.Web.Http.OData
- V5.7.0.0
对 controller 的引用。
在我的WebApiConfig
Register
方法中使用以下内容;
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.EnableQuerySupport();
//config.AddODataQueryFilter();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
需要注意的是,我已经尝试过 Intellisense 所说的 EnableQuerySupport( EnableQuerySupport()
和AddODataQueryFilter()
但似乎都不起作用。
在我的 controller 中,我有以下代码;
[HttpGet]
[EnableQuery]
[Route("find/odata")]
public PageResult<Job> Find(ODataQueryOptions<Job> searchOptions)
{
...
return new PageResult<Job>(response.Result, null, null);
}
我尝试使用和不使用[EnableQuery]
过滤器,没有任何变化。
作为参考,我一直在使用的链接是;
对此有何解决方案? 我看到了同样的行为。 如果我通过 config.Filter() 全局启用过滤器,它可以工作,但我宁愿在 class 上由 class 或按属性基本属性启用它,这似乎不起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.