【发布时间】:2021-06-22 10:43:11
【问题描述】:
我有一个在 ASP.NET 4.6.1 上运行的旧版 WebApi,我需要能够启用对端点的 OData fitler 支持。
但是,通过 Postman 调试控制器时,控制器上的ODataQueryOptions<Job> searchOptions 始终为空。
我的查询字符串示例是;
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 对控制器的引用。
在我的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 }
);
}
请注意,我已经尝试过 EnableQuerySupport()(intellisense 说它已过时)和 AddODataQueryFilter(),但似乎都不起作用。
在我的控制器中,我有以下代码;
[HttpGet]
[EnableQuery]
[Route("find/odata")]
public PageResult<Job> Find(ODataQueryOptions<Job> searchOptions)
{
...
return new PageResult<Job>(response.Result, null, null);
}
我尝试了使用和不使用 [EnableQuery] 过滤器,没有任何变化。
作为参考,我一直在使用的链接是;
【问题讨论】:
标签: c# asp.net asp.net-web-api asp.net-web-api2