0

欢呼男孩和女孩。

从 SPFx 到 SP 的 $batching 请求存在一些问题。

一些背景知识:SP 结构有一个包含许多子网站的网站集。每个子站点都有一个列表,其名称在所有子站点上都相同。我需要访问所有这些列表。

一个普通的 SPHttpClient 调用给了我所有站点的 url。到目前为止,一切都很好。

然后计划是对调用进行 $batch 以从列表中获取数据。不幸的是,我只能从其中一个电话中得到答案。其余的批处理调用给了我“InvalidClientQueryException”。如果我更改调用的顺序,似乎只有第一个调用成功。

const spBatchCreationOptions: ISPHttpClientBatchCreationOptions = {
     webUrl: absoluteUrl
};

const spBatch: SPHttpClientBatch = spHttpClient.beginBatch(spBatchCreationOptions);

// Add three calls to the batch
const dan1 = spBatch.get("<endpoint1>",SPHttpClientBatch.configurations.v1);
const dan2 = spBatch.get("<endpoint2>",SPHttpClientBatch.configurations.v1);
const dan3 = spBatch.get("<endpoint3>",SPHttpClientBatch.configurations.v1);

// Execute the batch
       spBatch.execute().then(() => {

            dan1.then((res1) => {
                return res1.json().then((res10) => {
                    console.log(res10);
                });
            });

            dan2.then((res2) => {
                return res2.json().then((res20) => {
                    console.log(res20);
                });
            });

            dan3.then((res3) => {
                return res3.json().then((res30) => {
                    console.log(res30);
                });
            });
 });

所以在这种情况下,只有调用 dan1 成功。但是,如果我将 call2 更改为与第一个调用具有相同的端点,它们都会成功。

我无法真正解决这个问题,所以如果有人有任何意见,将不胜感激。//担

4

1 回答 1

0

确保您的端点始终是每个批次的同一站点。您不能在一批中混合不同的站点。在这种情况下,只有来自同一站点的第一个呼叫会成功。为了克服这个问题,如果您想检索信息(您可以通过同一站点 URL 执行的操作),您可能会切换到搜索调用。有关更多信息,请参阅我的博文

于 2018-09-17T11:50:53.927 回答