【发布时间】:2017-01-08 00:46:59
【问题描述】:
我正在使用 OdataControllers 编写一个 ASP.NET Web API 2 Web 服务,我发现了如何使用 EnableQueryAttribute 的 PageSize Property 设置页面大小。我想允许我的 Web 服务的用户在 app.config 中设置页面大小,然后让应用程序读取此设置并设置页面大小。问题是使用该属性需要将 Page Size 设置为编译时间常数。
属性的使用:
[EnableQuery(PageSize = 10)]
public IHttpActionResult GetProducts()
{
return repo.GetProducts();
}
我看到的一个建议的解决方案是构造 EnableQueryAttribute 并将其设置在 HTTPConfiguration 配置对象上,如下所示
int customSize = ReadPageSizeSettingFromConfigFile();
var attr = new EnableQueryAttribute { PageSize = customSize };
config.AddODataQueryFilter(attr);
但这实际上不起作用。 HttpConfiguration 的 Filter 集合保持为空。
另一篇文章的评论(隐藏在 cmets 列表中)建议删除控制器上的所有 EnableQuery 属性,但这也没有效果。由于 EnableQuery 属性取代了旧的 Queryable 属性,我想知道这是否是 Microsoft 的问题。
这个问题之前有人问过,但没有回答过:How limit OData results in a WebAPI
非常感谢所有帮助。
【问题讨论】:
-
有点混乱。用户发出 web-api 请求,并且您希望该 api 请求修改 app.config 文件?你确定这是个好主意吗?
-
我已经扩展了我的问题以澄清。我想从 app.config 中读取值并在运行时设置它。
标签: asp.net asp.net-web-api2 odata