2010-05-05 2 views
6

코드 내에서 타이머 작업을 시작하려면 팜 관리자 자격 증명이 필요합니다. 그러나 모든 사이트에서 사용할 웹 파트에서 타이머 작업을 시작해야합니다. 이제 작업을 시작하려고하면 앱 풀 ID가 팜 관리자가 아니기 때문에 분명히 액세스 거부 오류가 발생합니다. 이 문제를 해결하는 방법에 대한 아이디어가 있습니까?타이머 작업 SPWeb에서

고마워요,

답변

6

타이머 작업은 팜 관리자로 실행되며 최종 사용자가 직접 트리거하지 않습니다. 일부 작업은 리소스를 많이 사용하기 때문에 팜 관리자 만 새 작업을 만들거나 기존 작업의 일정을 수정할 수 있습니다.

SPWorkItem 인프라를 사용하여 사용자 작업을 대기열에 넣은 다음 SPWorkItemJobDefinition에서 파생 된 사용자 지정 타이머 작업으로 처리합니다. 귀하의 웹 파트는 SPSite.AddWorkItem으로 전화하여 작업 항목을 추가합니다. 타이머 작업이 실행되면 일치하는 WorkItemType GUID가있는 작업 항목을 찾고 ProcessWorkItem 오버로드를 호출합니다.

3

당신이 옳습니다. 타이머 작업을 시작하려면 응용 프로그램 풀 사용자가 팜 관리자 여야합니다. 타이머 작업을 시작하면 SPSchedule으로 SPJobDefinition 개체를 업데이트해야합니다. SPJobDefinitionSPPersistedObject이며 SharePoint 구성 데이터베이스에 저장되어 있습니다. 팜 관리자 만이이 db에 쓸 수 있습니다.

이 문제를 해결할 방법이 없습니다.

해결 방법 : 요구 사항에 따라 정기적으로 실행되는 마스터 작업을 작성할 수 있습니다. 이 작업은 SharePoint 목록을 쿼리하고 그러한 목록 항목으로 정의 된 다른 작업을 시작할 수 있습니다. 마스터 작업이 팜 관리자 계정으로 실행되므로 작업에서 새 타이머 작업을 시작할 수 있습니다.

관련 문제