1

我得到这个错误。

错误:500:内部服务器错误:不应在此策略中执行具有有效分页 cookie 的查询

当我在 CRM 2011 的 WebResource 中调用此代码时

    self.loadWorkItems = function () {

        var user = self.user();
        var bid = user.BusinessUnitId.Id();
        var systemUserId = user.SystemUserId();
        var results = new Array();


        SDK.REST.retrieveMultipleRecords(
            "QueueItem",
            "$select=*&$skip=" + self.page() * self.pageSize() + "&$top=" + self.pageSize() + "&$orderby=CreatedOn asc&$filter=OwningBusinessUnit/Id eq guid'" + bid + "' and StateCode/Value eq 0",
            function (r) {
                results = results.concat(r);
            },
            function (error) {
                self.lastError(error.message);
            },
            function (x) {
                for (var i = 0; i < results.length; i++) {
                    var item = results[i];
                    var r = ko.mapping.fromJS(item, workItemMapping);
                    self.workQueue.push(r);
                }
            }
        );
    };

这是 knockoutjs 视图模型的一部分。我正在尝试制作一个“更多”按钮,该按钮可以从服务器获取下一页数据并将其扔到正在显示的列表的末尾。

页面加载得很好,第一页又回来了,但是当请求下一页时,我得到了这个错误。

关于如何在没有错误的情况下拨打电话的任何想法?

编辑

我弄错了似乎 $skip > 0 的一些调用有效。在这里发疯。

编辑

我认为这个错误试图告诉我的是,skip/top 组合超过了总记录数,而不是给我任何东西(如我所料),它抛出了一个异常。

所以新的问题是如何避免这种愚蠢?我想现在我必须计算所有记录,并确保我不会翻页太多。

4

2 回答 2

2

我们故意在执行查询时捕获所有错误,因为 SDK 在跳过中存在错误并采用 linq 查询,这会在跳过更多然后结果有项目时导致问题。据我所知,这还没有被微软修复

于 2015-04-10T12:49:17.883 回答
0

您获取一个不存在的“页面”。基本上,您跳过的元素比结果要多。

因此,假设基础结果总共有 10 条记录与您的过滤器匹配,您说

query.skip(12) 那么你会得到这种情况。

于 2014-09-14T04:40:50.240 回答