1

このエラーが発生します。

エラー:500:内部サーバーエラー:この戦略では、有効なページングCookieを使用したクエリを実行しないでください

CRM2011の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の呼び出しが機能しているようです。ここで夢中になる。

編集

このエラーが私に伝えようとしているのは、スキップ/トップコンボが合計レコード数を超えており、(私が期待するように)何も与えない代わりに、例外をスローしていることだと思います。

それで、新しい質問は、この愚かさをどのように回避するかです。私は今、すべてのレコードを数え、ページングしすぎないようにする必要があると思います。

4

2 に答える 2

2

SDK にはスキップにバグがあるため、クエリを実行するときに意図的にすべてのエラーをキャッチし、結果にアイテムが含まれるよりも多くスキップすると問題を引き起こす linq クエリを取得します。私の知る限り、これはまだマイクロソフトによって修正されていません

于 2015-04-10T12:49:17.883 に答える
0

存在しない「ページ」を取得します。基本的に、結果よりも多くの要素をスキップしています。

したがって、基礎となる結果には、フィルターに一致する合計 10 件のレコードがあり、次のように言うことができます。

query.skip(12) の場合、この状況が発生します。

于 2014-09-14T04:40:50.240 に答える