2012-04-23 11 views
0

2百万を超えるアイテムを持つOutlookパブリックフォルダからアイテムを取得しようとしました。ただし、ページサイズが10の場合でも、FindItemsは、フォルダ内のすべてのアイテムを照会しているかのように、永遠に戻ります。これまでのところ、2時間後には戻っていません。これをやめさせる方法はありますか?大きいフォルダでFindItemsを使用するExchange Webサービス

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

Exchange Server 2007 – zclark

答えて

0

この大きなフォルダからアイテムを取得するには、アイテムを見つけてそれに応じてバッチサイズを調整するためにPropertySet.IdOnlyを使用します。私はタイムアウトせずにこれをフィルタリングすることもできませんでした。

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

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

次に、読み込んだ内容を最小限に抑えながら、バッチを繰り返してアイテムに何をするかを行います。フィルタリングすることができないため、上部からアイテムを取り出すことができます。そのため、ほとんどの処理を行うには、処理済みのアイテムをバッチ間の別のフォルダに移動する必要があります。

+0

時間を大幅に節約できましたか? – Chandrew

関連する問題