在大型文件夹上使用查找项交换 Web 服务

本文关键字:交换 Web 服务 查找 大型 文件夹 | 更新日期: 2023-09-27 18:31:54

我一直在尝试从包含200多万个项目的Outlook公用文件夹中检索要删除的项目。但是,即使页面大小为 10,FindItems 也需要很长时间才能返回,就像它查询文件夹中的每个项目一样。到目前为止,它在 2 小时后仍未返回。 有没有办法阻止它这样做?

var folder = GetPublicFolder(service);
folder.Load();
var items = folder.FindItems(new ItemView(10)
    {
        Traversal = ItemTraversal.Shallow
    });

在大型文件夹上使用查找项交换 Web 服务

从这么大的文件夹中检索项目的唯一方法是在查找项目时使用 PropertySet.IdOnly 并相应地调整批大小。 我也无法在不超时的情况下对此进行任何过滤。

items = folder.FindItems(new ItemView(100)
                {
                    Traversal = ItemTraversal.Shallow,
                    PropertySet = PropertySet.IdOnly
                });
service.LoadPropertiesForItems(items, new PropertySet(ItemSchema.DateTimeReceived, 
                    ItemSchema.Subject));

然后遍历批处理并执行对项目执行的操作,同时将加载的内容保持在最低限度。 为了无法过滤,您只能从顶部抓取项目,因此要执行大多数操作,您需要将处理后的项目移动到批处理之间的单独文件夹中。