我的问题类似于:web-api-odata-inlinecount-not-working
我已经安装了以下软件包:
<packages>
<package id="Microsoft.AspNet.Cors" version="5.0.0-rc1" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.0.0-rc1" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.0.0-rc1" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Cors" version="5.0.0-rc1" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.OData" version="5.0.0-rc1" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.SelfHost" version="5.0.0-rc1" targetFramework="net45" />
<package id="Microsoft.Data.Edm" version="5.6.0" targetFramework="net45" />
<package id="Microsoft.Data.OData" version="5.6.0" targetFramework="net45" />
<package id="Newtonsoft.Json" version="5.0.6" targetFramework="net45" />
<package id="System.Spatial" version="5.6.0" targetFramework="net45" />
</packages>
该 api 是自托管的,启用了 cors 和属性路由。
// used for development purpose only
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
// enables attribute routing
config.MapHttpAttributeRoutes();
ProductController 的 GetAllProducts 方法:
[Queryable]
[HttpGet("products")]
public PageResult<ProductViewModel> GetAllProducts(ODataQueryOptions<ProductViewModel> options)
{
//return products.AsQueryable();
ODataQuerySettings settings = new ODataQuerySettings()
{
PageSize = 2
};
IQueryable results = options.ApplyTo(products.AsQueryable(), settings);
Uri uri = Request.GetNextPageLink();
long? inlineCount = Request.GetInlineCount();
PageResult<ProductViewModel> response = new PageResult<ProductViewModel>(
results as IEnumerable<ProductViewModel>,
uri,
inlineCount);
return response;
}
查询输出
http://localhost/api/products
如下:
如果我通过查询附加 ?$inlinecount=allpages 输出
http://localhost/api/products?$inlinecount=allpages
如下:
在调试期间,uri 和计数已正确设置但未映射到 json 响应中:
我错过了什么?
最佳答案
我发现了我的错误。通过删除 [Queryable] 属性,它工作得很好。
[HttpGet("products")]
public PageResult<ProductViewModel> GetAllProducts(ODataQueryOptions<ProductViewModel> options)
关于c# - Web API OData 内联计数未映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18428763/