欢呼男人和女孩。
从SPFx向SP批量处理请求时出现问题。
一些背景知识:SP结构有一个包含大量子网站的网站集。每个子网站都有一个列表,其名称在所有子网站上都相同。我需要访问所有这些列表。
正常的SPHttpClient调用为我提供了所有网站的网址。到现在为止还挺好。
然后计划批量调用以从列表中获取数据。不幸的是,我只能从其中一个电话中得到答案。其余的批处理调用给了我" 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更改为具有与第一次调用相同的端点,则它们都会成功。
我无法真正地围绕这一点,所以如果有人有任何意见,我将非常感激。 //丹
答案 0 :(得分:0)
确保每一批您的端点始终是同一站点。您不能在一个批次中混合使用不同的站点。在这种情况下,只有来自同一站点的第一个呼叫会成功。 为了克服这个问题,如果您想检索信息(可以在同一站点URL上执行的操作),可以切换到搜索呼叫。 有关更多信息,请参见我的blogpost。