문제

매시간 실행되는 SPJobDefinition(WSS)이 있습니다.일부 값을 기준으로 충족되면 일정 목록에 항목을 추가합니다.이 캘린더 목록에는 ItemAdded 이벤트에 연결된 이벤트 수신기가 있습니다.

작업이 항목을 트리거하고 추가하면 코드의 일부가 실행됩니다.내 말은 이벤트 로그에 쓸 수 없으며 web.config 파일에서 읽는 데 문제가 있는 것 같다는 것입니다.

내 자격 증명을 사용하여 캘린더 목록에 항목을 수동으로 추가하면 모든 것이 잘 작동합니다.즉, 이벤트로그에 이벤트가 있고 web.config 파일에서 해당 항목을 읽습니다.

시스템 계정이 캘린더 목록에서 항목을 추가하는 위치를 볼 수 있습니다.모든 권한을 가진 그룹에 시스템 계정을 추가하려고 시도했지만 여전히 문제가 있습니다.

이 작업을 수행하려면 살펴봐야 할 다른 것이 있습니까?풀 사용자를 확인했는데 네트워크 서비스입니다.이후 그룹에도 추가했습니다.

다른 곳을 봐야할지 모르겠습니다.

감사해요

업데이트됨(이벤트 로그에 쓰는 데 사용하는 코드입니다)

try
{
  System.Security.Principal.WindowsImpersonationContext wic = System.Security.Principal.WindowsIdentity.Impersonate(IntPtr.Zero);
  EventLog.WriteEntry(source, message, type);
  wic.Undo();
}
catch (Exception)
{
}
도움이 되었습니까?

해결책

이벤트 로그에 쓰는 것은 Windows 권한이 없기 때문일 수 있습니다.

타이머 작업은 web.config가 없는 Windows 서비스에서 실행됩니다.이벤트 수신기는 이벤트를 발생시키는 모든 프로세스에서 실행됩니다.따라서 현재 프로세스의 web.config를 읽으려고 하면 실패합니다.

web.config를 읽기 위해 파일 시스템에 접근하려고 하면 다시 Windows 권한이 필요할 수 있습니다.

SharePoint 그룹에 사용자를 추가하면 EventLog 또는 파일에 액세스하는 데 도움이 될 수 없습니다. 이는 SharePoint 개체가 아닌 Windows 개체입니다.

타이머 작업에서 실행할 때 Impersonate(IntPtr.Zero); 아무것도 바뀌지 않습니다.이미 실행 중인 프로세스 계정을 가장합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top