Sharepoint 2010 当代码包装在计时器作业中时,无法以编程方式从SPWeb对象获取回收站项目

Sharepoint 2010 当代码包装在计时器作业中时,无法以编程方式从SPWeb对象获取回收站项目,sharepoint-2010,timer-jobs,recycle-bin,sharepoint-timer-job,Sharepoint 2010,Timer Jobs,Recycle Bin,Sharepoint Timer Job,我有一个计时器作业,通过它我可以编程地循环浏览网站集中的每个网站,并希望获得每个网站的回收站项目。下面是我的代码- 公共覆盖无效执行(Guid targetInstanceId) { SPSecurity.RunWithElevatedPrivileges(委托 { SPFarm=SPFarm.Local SPWebService service = farm.Services.GetValue<SPWebService>("");

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

公共覆盖无效执行(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} }
SPWebService service=farm.Services.GetValue(“”);
foreach(SPWebApplication-webapp-in-service.WebApplications)
{
foreach(webapp.Sites中的SPSite站点)
{
foreach(site.AllWebs中的SPWeb站点)
{
//获取站点的回收站项目
SPRecycleBinQuery rbQuery=新的SPRecycleBinQuery();
rbQuery.ItemState=SPRecycleBinItemState.SecondStageRecycleBin;
rbQuery.RowLimit=10000;
SPRecycleBinItemCollection actualRBItems=web.GetRecycleBinItems(rbQuery);
如果(实际比特数!=null)
{如果(actualRBItems.Count!=0){//do something}
}}}})}

但是,即使在网站回收站中有了项目,我每次都会在代码中获得SPWeb.RecycleBin.count的计数0,而我能够获得带有项目的网站集RB SPWeb.site.RecycleBin。有没有人有任何想法,我的要求是获得项目从每个网站内的网站科尔分开。非常感谢您的帮助


另外,只是补充一下,我在事件接收器中尝试了相同的代码,它可以工作!这是计时器工作的限制还是我代码中的问题?我已经尝试了下面的代码,并且能够遍历列表项

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)
        {               
        }
    }

我提到我可以为网站集对象获取回收站项目。问题是在“web”对象上获取回收站项目!!!