サイト コレクション内の各 Web サイトをプログラムでループするタイマー ジョブがあり、各 Web サイトのごみ箱のアイテムを取得したいと考えています。以下は私のコードです -
public override void Execute(Guid targetInstanceId) { SPSecurity.RunWithElevatedPrivileges(delegate { SPFarm ファーム = SPFarm.Local;
SPWebService service = farm.Services.GetValue<SPWebService>("");
foreach (SPWebApplication webapp in service.WebApplications)
{
foreach (SPSite site in webapp.Sites)
{
foreach (SPWeb web in site.AllWebs)
{
//Get the recycle Bin Items of the site
SPRecycleBinQuery rbQuery = new SPRecycleBinQuery();
rbQuery.ItemState = SPRecycleBinItemState.SecondStageRecycleBin;
rbQuery.RowLimit = 10000;
SPRecycleBinItemCollection actualRBItems = web.GetRecycleBinItems(rbQuery);
if (actualRBItems != null)
{ if (actualRBItems.Count != 0) {//do something} }
}}}});}
しかし、Web サイトのごみ箱にアイテムを入れた後でも、SPWeb.RecycleBin.Count のたびにコードでカウント 0 を取得しますが、サイト コレクション RB SPWeb.Site.RecycleBin をアイテムで取得できます。私の要件は、サイト coll 内の各 Web サイトから個別にアイテムを取得することです。どんな助けでも大歓迎です!!
また、追加するために、イベントレシーバー内で同じコードを試しましたが、動作します! それはタイマージョブの制限または私のコードの問題ですか