2012-08-14 2 views
5

사이트 목록의 특정 위치에 구성 목록이 있어야하는 SharePoint 타이머 작업이 있습니다. 해당 목록이 없으면 해당 목록을 작성하고 (물론 채울 수 있도록) 해당 목록에 rerun the job을 표시하고 싶습니다.SharePoint 타이머 작업에서 상태를보고하는 방법

아래 코드를 사용하여 이벤트 로그에 쓸 수 있으며 실패한 작업 상태를 나타 내기 위해 예외를 throw 할 수 있음을 알고 있지만 문제를 나타내는 메시지와 함께 예외를 throw합니다. ULS를 살펴 보거나 이벤트 로그에 액세스 할 필요가 없습니다. 지금까지 발견 한 게시물 like this onethis one에는 세부 정보가 너무 많습니다.

두 가지 질문 : 1) 타이머 작업 예외에 대한 실패 메시지를 제공하는 방법이 있습니까? 2) Exception()보다 더 좋은 선택을 할 수 있습니까? 사이트 모음

SPDiagnosticsService.Local.WriteEvent(0, 
    new SPDiagnosticsCategory("MyCategory", 
     TraceSeverity.Unexpected, 
     EventSeverity.ErrorCritical), 
    EventSeverity.ErrorCritical, 
    "Assert failed: if (!spweb.Exists)" + sp.Url, 
    sp.ToString()); 

누락 된 경우

이벤트 로깅 내가

bool configListExists = ListExists(spweb, ConfigListName); 
if (! configListExists) 
{ 
    ReportMissingConfigList(); 
    throw new Exception("Configuration list not found"); 
} 

public static bool ListExists(SPWeb web, string listName) 
{ 
    return web.Lists.Cast<SPList>().Any(list => string.Equals(list.Title, listName)); 
} 

답변

1

내가 옆에 별도의 로그 목록을 가지고 추천 할 것없는 구성리스트와 함께 할 싶은 무엇 사용 설정 목록. 이 목록에서 필요할 때 작업 상태를 기록한 다음 사용자가이 목록에 알림을 설정하여 적절한 조치를 취할 수 있습니다.

+0

이것은 내가 별도로 묻는 다른 질문으로 이어진다. a) 로그리스트가 없다면 어떨까? b) 아마 FeatureActivation 피처 수신자 메쏘드에리스트를 추가해야한다. 수동으로 생성 되었습니까? , c) 목록을 프로그래밍 방식으로 수동으로 작성하는 것보다 훨씬 더 많이 추가하고 있습니까? –

+0

필자가 제안한 것처럼 피처 수신자 대신 목록을 만드는 것이 좋습니다. 자동 생성은 작업을 줄이고 안정성을 높이며 모든 응용 프로그램 (prod, test, dev)에서 목록의 설정이 정확히 동일하도록 수동 작성보다 (항상) 항상 바람직합니다. –

+0

다른 문제는 cofig 목록의 하드 코딩 된 위치에 대한 의존도와 같이 남아 있습니다. 기능을 활성화 한 사이트 모음의 루트에이 사이트를 만들고 싶지만 그 방법을 시도해 볼 때 작동하지 못했습니다. 다른 질문으로 게시 한 다음 링크로 업데이트해야합니다. –

관련 문제