【问题标题】:Web API OData inlinecount not mappedWeb API OData inlinecount 未映射
【发布时间】:2013-08-28 00:51:39
【问题描述】:

我的问题类似于: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 和 count 已正确设置,但未映射到 json 响应中:

我错过了什么?

【问题讨论】:

    标签: c# json asp.net-web-api


    【解决方案1】:

    我发现了我的错误。通过删除属性 [Queryable] 它工作得很好。

    [HttpGet("products")]
    public PageResult<ProductViewModel> GetAllProducts(ODataQueryOptions<ProductViewModel> options)
    

    【讨论】:

      猜你喜欢
      • 2013-03-25
      • 2013-03-03
      • 1970-01-01
      • 2012-05-29
      • 2016-03-30
      • 2012-07-03
      • 2012-11-23
      • 2015-02-06
      • 2011-10-08
      相关资源
      最近更新 更多