在大文件夹上使用FindItems交换Web服务

时间:2012-04-23 05:44:16

标签: c# outlook exchangewebservices

我一直在尝试从Outlook公用文件夹中检索要删除的项目,只有超过200万个项目。但是,即使页面大小为10,FindItems也会永远返回,就好像它正在查询文件夹中的每个项目一样。到目前为止它还没有在2小时后返回。有没有办法阻止它这样做?

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

1 个答案:

答案 0 :(得分:0)

从文件夹中检索项目的唯一方法是在查找项目时使用PropertySet.IdOnly并相应地调整批量大小。如果没有超时,我也无法对此进行任何过滤。

items = folder.FindItems(new ItemView(100)
                {
                    Traversal = ItemTraversal.Shallow,
                    PropertySet = PropertySet.IdOnly
                });

service.LoadPropertiesForItems(items, new PropertySet(ItemSchema.DateTimeReceived, 
                    ItemSchema.Subject));

然后遍历批处理并按照项目执行操作,同时将加载的内容保持在最低限度。要做到无法过滤,你只能从顶部抓取物品,所以做大部分事情你需要将处理过的物品移到批次之间的单独文件夹中。