【发布时间】:2017-11-01 01:03:10
【问题描述】:
我正在尝试构建一个这样的嵌套查询...
~/Api/Calendar?$filter=Roles/any(r:r/User/any(u:u/Name eq 'Joe 博客'))
如果我删除内部的 any 子句,留下...
~/Api/Calendar?$filter=Roles/any(r:r/User/any())
...然后端点返回...
{
"error": {
"code": "",
"message": "The query specified in the URI is not valid. The Any/All nesting limit of '1' has been exceeded. 'MaxAnyAllExpressionDepth' can be configured on ODataQuerySettings or EnableQueryAttribute."
}
}
...我认为这有助于解决这个问题,但实际上我在这里。
到目前为止,我已经尝试在我的上下文初始化过程中提高这个限制,但它似乎没有工作......
config.AddODataQueryFilter(new EnableQueryAttribute { MaxAnyAllExpressionDepth = 3 });
有没有人知道如何在全局范围内执行此操作(我不想在每个控制器上执行每个 get 操作并设置深度。
更新:
所以事实证明,我从自己的 baseEntityController 继承,在操作上我有 EnableQuery 属性,它取代了我的全局配置更改,因为我的更改没有得到尊重。
只需从动作本身中删除属性,所有从我的基础继承的控制器都可以使用这个新的嵌套任何和所有限制,但我现在似乎有扩展不再起作用的副作用......
var query = new EnableQueryAttribute {
MaxExpansionDepth = 8,
PageSize = 100,
MaxAnyAllExpressionDepth = 3,
AllowedFunctions = System.Web.OData.Query.AllowedFunctions.All,
AllowedLogicalOperators = System.Web.OData.Query.AllowedLogicalOperators.All,
AllowedQueryOptions = System.Web.OData.Query.AllowedQueryOptions.All,
AllowedArithmeticOperators = System.Web.OData.Query.AllowedArithmeticOperators.All,
MaxTop = 1000
};
config.AddODataQueryFilter(query);
.. 如您所见,我尝试在其中添加很多额外内容,但没有任何内容!
【问题讨论】:
标签: asp.net-web-api odata any