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

Abdul Qadir Memon picture Abdul Qadir Memon · Sep 21, 2016 · Viewed 9.5k times · Source

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;
}

Answer

ogrim picture ogrim · Oct 13, 2016

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