2010-12-16 63 views
0

我似乎無法讓這個東西運行。我相信它主要與ApplicationId的第一個參數有關。我無法弄清楚輸入什麼ID。我得到4的返回結果,這意味着不好的ID。所有的樣本都是2007年的,並且使用了SearchContext並且已被棄用。任何人?通過API與SharePoint 2010編譯觀衆(非2007)

public void CompileAudience(SPServiceContext serviceContext, AudienceManager audienceMgr, string AudienceName) 
    { 
     try 
     { 
      int RunJob = -1; 

      CustomMaintenanceTimerJobLogging.LogInfo(CustomMaintenanceTimerJobLogging.CategoryType.AudienceCompile, String.Format("Started compiling the audience '{0}' at {1}", AudienceName, DateTime.Now.ToShortTimeString())); 

      SPSecurity.RunWithElevatedPrivileges(delegate() 
      { 
       // Access the service proxy instance of search application proxy. 
       SearchServiceApplicationProxy searchApplicationProxy = serviceContext.GetDefaultProxy(typeof(SearchServiceApplicationProxy)) as SearchServiceApplicationProxy; 

       // Service Application Info object to retrieve the application id for the search service. 
       SearchServiceApplicationInfo searchApplicationInfo = searchApplicationProxy.GetSearchServiceApplicationInfo(); 

       string[] args = new string[4]; 
       args[0] = searchApplicationInfo.SearchServiceApplicationId.ToString(); 
       args[1] = "1"; // 1=Start compile, 0=Stop 
       args[2] = "1"; // 1=Full, 0=Incremental 
       args[3] = AudienceName; 

       RunJob = AudienceJob.RunAudienceJob(args); 
      }); 

      CustomMaintenanceTimerJobLogging.LogInfo(CustomMaintenanceTimerJobLogging.CategoryType.AudienceCompile, String.Format("Completed compiling the audience '{0}' at {1} with a Result Code of {2} (0 means no errors)", AudienceName, DateTime.Now.ToShortTimeString(), RunJob)); 
     } 
     catch (Exception ex) 
     { 
      CustomMaintenanceTimerJobLogging.LogError(CustomMaintenanceTimerJobLogging.CategoryType.AudienceCompile, ex); 
     } 
    } 

回答

0

請查看我的博文:http://blog.repsaj.nl/?p=258。這就是你需要去的地方。您需要傳遞的應用程序ID不是搜索服務ID,而是用戶配置文件ID。需要一些反思才能找到該ID。