c# - Web API OData 内联计数未映射

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

我的问题类似于: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 

如下:

http://localhost/api/products

如果我通过查询附加 ?$inlinecount=allpages 输出

http://localhost/api/products?$inlinecount=allpages

如下:

http://localhost/api/products?$inlinecount=allpages

在调试期间,uri 和计数已正确设置但未映射到 json 响应中:

enter image description here

我错过了什么?

最佳答案

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

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

关于c# - Web API OData 内联计数未映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18428763/

相关文章:

c# - 使用没有魔术字符串的 ViewModels 的 MVC 下拉列表

c# - 在跨 Controller 的 c# MVC 中使用数据保护加密解密

javascript - 从 JSON API 获取数据并以 HTML 形式显示

angularjs - Angular使用ajax获取JSON数据

javascript - 当使用多种编码时如何分离 json 解析的数据?

asp.net-mvc - 从 Context/Cookie 访问 Web API 中的用户数据

c# - ASP 从 C# 调用 javaScript

c# - asp.net 下拉列表和 View 状态

c# - 从 asp.net webapi 下载并返回文件

asp.net-mvc-4 - WebAPI 如何指定将到达 Controller 的路由