0

我有一个计时器作业,我通过它以编程方式循环浏览网站集中的每个网站,并希望获得每个网站的回收站项目。下面是我的代码 -

公共覆盖无效执行(Guid targetInstanceId){ SPSecurity.RunWithElevatedPrivileges(委托 { 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} }

}}}});}

但即使在网站回收站中有项目之后,我每次都在代码中为 SPWeb.RecycleBin.Count 获得计数 0,而我能够获得带有项目的站点集合 RB SPWeb.Site.RecycleBin。有人知道吗,我的要求是从网站 coll 中的每个网站分别获取项目。任何帮助深表感谢 !!

另外,补充一下,我在事件接收器中尝试了相同的代码,它有效!是定时器工作的限制还是我的代码中的问题

4

1 回答 1

0

我已经尝试了下面的代码并且能够遍历列表项。

static void GetSiteRecycleBin(string pSiteUrl, int pMaxRecycleBinDelete)
    {
        try
        {
            using (SPSite site = new SPSite(pSiteUrl))
            {
                SPRecycleBinQuery query = new SPRecycleBinQuery();
                query.RowLimit = pMaxRecycleBinDelete;
                SPRecycleBinItemCollection recycleitems = site.GetRecycleBinItems(query);

                foreach (SPRecycleBinItem item in recycleitems)
                {
                }
            }
        }
        catch (Exception ex)
        {               
        }
    }
于 2015-05-23T06:27:38.097 回答