0

나는 사이트 모음의 각 웹 사이트를 프로그래밍 방식으로 반복하는 타이머 작업을 가지고 있으며 다음 항목에 대한 휴지통 항목을 가져 오려고합니다. 각 웹 사이트. 다음은 내 코드입니다 -SPWeb 개체에서 프로그래밍 방식으로 휴지통 항목을 가져올 수 없습니다. 코드가 타이머 작업으로 래핑 된 경우

공공 재정의 무효 (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 내의 각 웹 사이트와 별도로 항목을 얻는 것입니다. 어떤 도움이라도 대단히 감사합니다 !!

또한 추가하기 만하면 이벤트 수신기에서 동일한 코드를 시도했지만 작동합니다! 타이머 작업이나 코드의 문제점이 있습니까?

답변

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

내가 언급 한 사이트 모음 개체에 대한 휴지통 항목을 가져올 수 있습니다. 문제는 "웹"객체에서 휴지통 항목 가져 오기입니다 !!! – sid