【发布时间】:2014-12-19 21:52:38
【问题描述】:
我有一个工作的 WebAPI (v2),它利用了很棒的 BreezeJS 产品。我正在尝试添加分页功能,但只要我在 URL 中包含 $skip 作为参数,WebAPI 就会生成此错误:
{
$id: "1",
$type: "System.Web.Http.HttpError, System.Web.Http",
Message: "An error has occurred."
}
调试 API 不会给我任何额外的信息,因为它不会崩溃。
我传递的参数是:http://www.example.com/api/Test/Designs?$skip=5&$top=5&$inlinecount=allpages&
如果我在没有 $skip 参数的情况下调用它,它可以正常工作。其他“$”参数似乎工作得很好,我可以这么称呼:
http://www.example.com/api/Test/Designs?$top=3
它按预期工作。
我已经验证我没有使用任何 BreezeQueryable 属性或任何东西,所以应该允许 $skip。
如果有帮助,请提供其他设置信息:
- SQL Server Express v2012
- 微风服务器端是v1.5.0.0
- 实体框架 v6
- Microsoft.Data.OData 是 v5.6
为了使用分页,我还需要启用其他功能吗?或者有没有办法找到这个错误的真正原因?如果需要,我可以提供一个有效的 URL。
谢谢。
【问题讨论】:
-
正确。使用
.skip子句时,必须添加.orderby子句。您将在the breeze query documentation 中看到这一点。这是 EF 约束,而不是 Breeze 约束。 -
感谢 Jeremy 和 Ward - 这就是解决方案。杰里米,请提交一个答案,这样你就可以先得到我的答案。 (也谢谢你 Ward - 你一直是社区的巨大帮助者)
-
Ward - Breeze 服务器端是否有可能监视这样的情况并在 EF 掌握它之前抛出错误?至少那时我们可以显示一个有意义的错误。对增强请求的想法?
标签: javascript asp.net-web-api2 breeze