OData Exception The limit of '0' for Top query has been exceeded

天涯浪子 提交于 2019-12-10 12:29:44

问题


I am using OData Web API for Version 4, when I try to query OData web Api using $top parameter, it return me following exception message.

The query specified in the URI is not valid. The limit of '0' for Top query has been exceeded. The value from the incoming request is '10'

I am using Apache Ignite dotNet LINQ as data source instead of Entity Framework, my OData controller action method is as follows:

[EnableQuery]
public IQueryable<Productioncurvepnl> GetProductioncurvepnl()
{
    Console.WriteLine("Starting query to ignite");
    var q = AIgniteClient.IgniteClient.Instance.ProductionCurvePnLCache.AsCacheQueryable().Select(c => c.Value);
    return q;
}

回答1:


Since Web API OData V6.0.0 you need to enable query options to have this work. This can be done globally in the WebApiConfig.Register(HttpConfiguration config)

config.Select().Expand().Filter().OrderBy().MaxTop(null).Count();

or directly on your models, for fine grained configuration:

[Page(MaxTop = 100)]
public class Products

If you're using Model Bound Fluent APIs and cannot add attributes, you'll need to append the query options. For example .Page(50, 50):

 builder.EntitySet<AccountRecordDto>("Accounts").EntityType.Expand(1, 
 "Transactions").Count().Page(50, 50);

More details can be found in the documentation




回答2:


Adding below in Startup.cs works for me

config.Select().Expand().Filter().OrderBy().MaxTop(null).Count();



回答3:


Based on the returned error message the problem most likely is that the MaxTop is not defined. You can do that using the EnableQueryAttribute on your method like so (change the value as you see fit), I used a value of 100.

[EnableQuery(MaxTop = 100)]
public IQueryable<Productioncurvepnl> GetProductioncurvepnl()
{
    Console.WriteLine("Starting query to ignite");
    var q = AIgniteClient.IgniteClient.Instance.ProductionCurvePnLCache.AsCacheQueryable().Select(c => c.Value);
    return q;
}

See EnableQueryAttribute for more details.




回答4:


For me [EnableQuery (Max Top = 100)] not working, but [Queryable] working fine. [EnableQuery (Max Top = 100)] should work but don't know why it's not working. Someone knows then please let me know. But for now I am using [Queryable].



来源:https://stackoverflow.com/questions/39622599/odata-exception-the-limit-of-0-for-top-query-has-been-exceeded

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!