返回HTTP 404的ASP.NET Web API OData V4服务($ top)

时间:2018-12-02 17:38:54

标签: c# asp.net odata

我正在尝试使用C#(VS 2017,.Net 4.6.1)构建OData服务,但无法使OData查询字符串选项起作用。返回一个组或单个MusicItem的调用有效,但是当我添加$ top = 2时,会收到HTTP 404响应。我已经在网上研究了两天,但找不到答案。

有想法吗?

WebApiConfig如下:

ty

MusicItemsController如下:

ty

1 个答案:

答案 0 :(得分:0)

您收到404错误的事实可能是由于您缺少在URL中添加$ top作为查询参数的原因。您需要在

之后添加所有odata查询

该网址应类似于:http://example.com?$ top = 2

此外,我认为您需要为用户可以查询的最大最高值指定一个值,否则,默认情况下它将为0,并且会收到类似以下内容的错误消息:

  

“在URI中指定的查询无效。限制为'0'   已超过热门查询。来自传入请求的值是   '2'。”,

[EnableQuery(AllowedQueryOptions = AllowedQueryOptions.All, MaxTop = 10)]

更新

您还需要通过执行以下操作在实体中启用分页:

public static IEdmModel GetImplicitEDM()
    {
        ODataConventionModelBuilder builder = new ODataConventionModelBuilder();

        builder
            .EntitySet<MusicItem>("MusicItems")
            .Page();

        return builder.GetEdmModel();

    }