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