问题描述
我有扫描包含 InfoPath 表单列表的文档库的代码。它使用带有 caml 查询的 CSOM 来获取它需要使用的特定表单。我已经让这段代码运行了多年,没有出现任何问题。今天,我开始收到错误“尝试的操作被禁止,因为它超出了列表视图阈值。”
这是 SharePoint Online,我知道列表视图阈值为 5000。我们的列表中确实有 5000 多个项目,并且有一段时间了。 我尝试检索的结果应该带回大约 10 个表单;远低于 5000 项阈值。 我查询的两个字段都已编入索引。
ListItemCollection spList = clientContext.Web.Lists
?.GetByTitle(libName)
?.GetItems(new CamlQuery
{
ViewXml = "<View><Query><Where><And><Eq><FieldRef Name=\"Field1\"/><Value Type=\"Text\">No</Value></Eq><Eq><FieldRef Name=\"Field2\"/><Value Type=\"Text\">No</Value></Eq></And></Where></Query></View>"
});
clientContext.Load(spList);
clientContext.Load(spList,items => items.Include(
item => item.ContentType,item => item.displayName,item => item.ContentType.Fields,item => item.Folder,item => item.Folder.Files,item => item.File.ListItemAllFields,item => item.FileSystemObjectType,item => item.File,item => item.File.Author,item => item.File.ServerRelativeUrl
));
clientContext.SendRequest();
在测试问题时,我发现我可以通过 ID 检索一个项目
"<View><Query><Where><Eq><FieldRef Name='ID' /><Value Type='Number'>16134</Value></Eq></Where></Query></View>"
但是,当尝试使用 Or 并包含两个 ID 时,我再次收到错误消息。
"<View><Query><Where><Or>" +
"<Eq><FieldRef Name='ID' /><Value Type='Number'>6001</Value></Eq>" +
"<Eq><FieldRef Name='ID' /><Value Type='Number'>6002</Value></Eq>" +
"</Or></Where></Query></View>"
似乎阈值现在表现得好像是一。我不确定这是否是由于我查询数据的方式以及出于某种原因返回了所有结果,或者是否存在内部错误。
我的第一个想法是 Microsoft 方面出了点问题,但我在健康中心或其他任何地方都没有提到。
是否有任何已知的可能导致此问题的原因以及有关如何纠正问题的任何建议?可能是 MS 最近的变化或折旧?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)