2012-06-18 4 views
3

나는 타이머 작업을 만들고 있습니다. "HTTP : // 서버 : 9090/사이트/thesite"는 잠시 동안타이머 작업에서 웹 사이트의 목록에 액세스하는 방법

, 내 타이머 작업에서 내가 사용이 :

SPWebApplication webApplication = this.Parent as SPWebApplication; 
SPContentDatabase contentDb = webApplication.ContentDatabases[contentDbId]; 

SPList ParametresTech = contentDb.Sites["sites/thesite"].RootWeb.Lists[Constantes.Listes.PARAMETRES_TECHNIQUES.Name]; 
그리고 난 사이트에 저장 내 솔루션의 일부 목록에 액세스해야

제가 직면 한 문제는 제가 개발 환경에 있다는 것입니다. 그리고 프로덕션 환경에서 솔루션을 배포하는 데 사용할 사이트의 URL이 무엇인지 알 수 없습니다.

사이트의 이름을 모른 채 목록에 올라갈 수있는 방법이 있습니까?

감사

편집 : 즉, 타이머 작업이 활성화 방법은 다음과 같습니다

public override void FeatureActivated(SPFeatureReceiverProperties properties) 
    { 
     string ListJobName = "SAPToSQL"; 


     SPSite site = properties.Feature.Parent as SPSite; 
     // make sure the job isn't already registered 
     foreach (SPJobDefinition job in site.WebApplication.JobDefinitions) 
     { 
      if (job.Name == ListJobName) 
       job.Delete(); 
     } 
     // install the job 
     TimerJobSAPToSP listLoggerJob = new TimerJobSAPToSP(ListJobName, site.WebApplication); 
     SPHourlySchedule schedule = new SPHourlySchedule(); 
     schedule.BeginMinute = 0; 
     schedule.EndMinute = 59; 
     listLoggerJob.Schedule = schedule; 
     listLoggerJob.Update(); 
    } 
+0

자세한 정보가 필요합니다. URL이 아니라면 제작 사이트를 구별 할 수 있습니까? 특정 활성화 된 기능을 기반으로합니까? 다른 것? 지금 당장 당신의 질문은 "나는 어디로 가야할지 모르겠다. 내가 어떻게 거기에 갈 수 있니?"라고 요약 할 수 있습니다. –

+0

예 타이머 작업이 내 편집에 표시된대로 피처 이벤트 수신자에서 활성화됩니다. –

답변

2

는 확실히 URL에 의한 것이 아니라 타이머 작업을 생성하는 기능 ID를 사용하여 사이트 모음을 식별하는 것입니다. 이렇게하면 사이트 이름 지정에 유연성이 제공 될뿐만 아니라 작업에 각각 가입 한 여러 사이트 모음을 처리 할 수 ​​있습니다.

나는 타이머 작업에 대한 사이트 모음을 수집하기 위해 다음과 같은 유틸리티 메소드를 쓴 다음 FEATUREID 매개 변수에
public static List<Guid> GetSiteIDs(SPWebApplication webApplication, Guid featureId) 
{ 
    List<Guid> ids = new List<Guid>(); 
    foreach (SPSite site in webApplication.Sites) 
    { 
     try 
     { 
      if (SPSite.Exists(new Uri(site.Url)) 
       && null != site.Features[featureId]) 
      { 
       try 
       { 
        ids.Add(site.ID); 
       } 
       catch (Exception ex) 
       { 
        // Handle Exception 
       } 
      } 
     } 
     finally 
     { 
      site.Dispose(); 
     } 
    } 
    return ids; 
} 

, 내 작업 정의 클래스 I 선언하는 상수를 전달합니다.

자세한 내용은 다음을 참조하십시오. Scope of a feature activated Custom Sharepoint-Timer Job

관련 문제