我有一个计时器作业,通过它我可以编程方式遍历网站集中的每个网站,并希望获得每个网站的回收站项目。以下是我的代码 -
public override void Execute(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} }
}}}});}
但即使在网站Recycle bin中有项目后,我每次都会在SPWeb.RecycleBin.Count中获得0的代码,而我能够获得RB SPWeb.Site.RecycleBin的网站集。有没有人有任何想法,我的要求是从网站coll中的每个网站单独获取项目。任何帮助非常感谢!!
另外,只是为了添加,我在事件接收器中尝试了相同的代码,它的工作原理!是不是我的代码中的计时器工作或问题的限制
答案 0 :(得分: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)
{
}
}