Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# sharepoint列表caml查询问题,因为它超过阈值限制_C#_Sharepoint_Sharepoint 2013_Csom_On Prem - Fatal编程技术网

C# sharepoint列表caml查询问题,因为它超过阈值限制

C# sharepoint列表caml查询问题,因为它超过阈值限制,c#,sharepoint,sharepoint-2013,csom,on-prem,C#,Sharepoint,Sharepoint 2013,Csom,On Prem,查询SharePoint列表时出现以下错误,该列表有5005条记录,阈值限制为5000。 我有一个sharepoint列表,其中包含不同的文件夹,我使用CAML查询和RecursiveAll从所有文件夹中获取记录。 我得到这个错误:- 尝试的操作被禁止,因为它超出了列表视图 管理员强制执行的阈值。在 Microsoft.SharePoint.Client.ClientRequest.ProcessResponseStream(流 响应(团队)在 Microsoft.SharePoint.Clie

查询SharePoint列表时出现以下错误,该列表有5005条记录,阈值限制为5000。 我有一个sharepoint列表,其中包含不同的文件夹,我使用CAML查询和RecursiveAll从所有文件夹中获取记录。 我得到这个错误:-

尝试的操作被禁止,因为它超出了列表视图 管理员强制执行的阈值。在 Microsoft.SharePoint.Client.ClientRequest.ProcessResponseStream(流 响应(团队)在 Microsoft.SharePoint.Client.ClientRequest.ProcessResponse()位于

我的问题是

"<View Scope='RecursiveAll'> <RowLimit>1000</RowLimit><Query><Where><Eq><FieldRef Name='Year' /><Value Type='Text'>" + Period + "</Value></Eq></Where></Query></View>";
“1000”+句点+”;
年份是索引列。如果我删除where子句,它将开始工作。在我看来,
recursiveall
似乎不适用于
where
子句


我不想更改列表阈值限制。

列表的默认阈值为5000。您需要更改此列表的SharePoint配置设置以具有更高的阈值。不确定您使用的SharePoint版本,但是否可以访问管理中心


如果您正在使用SharePoint Online,我想您可能会被卡住

要解决此问题,您需要使用ContentIterator。基本上,您是将查询分解为一批,例如2000个项目。从Microsoft网站:

SharePoint Server提供了一个新的API ContentIterator来帮助 在不点击列表的情况下访问大列表中的5000多个项目 限制限制并接收SPQueryThrottleException。 ContentIterator实现了一种用于分割查询的回调模式 用于一次处理单个项目。考虑使用这种能力 如果您需要处理大量可能超过 节流限制。下面的简单示例演示了 ContentIterator使用的方法使用返回20001的列表进行测试 查询中的项目

有关正式文档,请参阅


这也可能有帮助。

您想要纯javascript解决方案吗?我有一个CSOM c#解决方案,我应该发布吗?你能分享你正在使用的代码吗?应该指出的是,虽然上述方法可能会解决你的问题,但Microsoft不建议这样做,因为它可能会导致其他问题(延迟、巨大延迟等)。批处理请求可能是一个更好的解决方案,即使它的实现有点困难。“这是O365和内部部署SharePoint之间的关键区别之一。使用内部部署SP,您实际上可以提高阈值限制并绕过该错误,但它确实会产生后果,因为您的SQL Server将受到重大资源损失。”