【问题标题】:"Cannot support querying" Controller Error“不支持查询”控制器错误
【发布时间】:2013-04-07 21:34:43
【问题描述】:

我正在研究此处找到的以下答案:Web API OData Inlinecount not working

这是我的控制器,提供了一些虚拟数据。

[Queryable]
public class ValuesController : ApiController
{
    // GET api/values
    public PageResult<Category> Get(ODataQueryOptions<Category> queryOptions)
    {
        var returnValue = new List<Category>()
        {
            new Category() { Id = 1, Name= "Category 1"},
            new Category() { Id = 2, Name= "Category 2"},
            new Category() { Id = 3, Name= "Category 3"},
        };

        IQueryable results = queryOptions.ApplyTo(returnValue.AsQueryable());

        return new PageResult<Category>(results as IEnumerable<Category>,
            Request.GetNextPageLink(), Request.GetInlineCount());
    }
}

当我尝试通过 Fiddler 进行获取时出现以下错误:

“控制器“值”上的操作“获取”,返回类型为“System.Web.Http.OData.PageResult`1[[ODataTest_Solution.DTO.Category,ODataTest 解决方案,版本=1.0.0.0,文化=中性, PublicKeyToken=null]]' 不支持查询。确保返回内容的类型是 IEnumerable、IQueryable 或任一接口的通用形式。"

如果我将方法更改为返回 IQueryable,它显然可以正常工作。

知道我做错了什么吗?

【问题讨论】:

    标签: c# asp.net-mvc-4 odata asp.net-web-api


    【解决方案1】:

    我已经尝试过您的 ValuesController,它工作得很好。

    您的问题很可能是您在此操作中添加了[Queryable] 属性。如果您使用 ODataQueryOptions,则不需要使用 [Queryable],因为您自己应用查询而不需要操作过滤器。

    【讨论】:

    • 就是这样。更改了代码示例,以便现在包含属性。
    猜你喜欢
    • 2012-12-19
    • 2015-10-28
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 2019-10-12
    • 1970-01-01
    相关资源
    最近更新 更多