Проблема разрешений с использованием Spjobdefinition

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/36139

  •  09-12-2019
  •  | 
  •  

Вопрос

У меня есть spjobdefinition (WSS), который проходит каждый час. Основываясь на некоторых значениях, а если выполнено, он добавляет элемент в список календаря. Этот список календаря имеет ресивер события, прикрепленный к томуленствуедому событию.

Когда задание запускает и добавляет элемент, части выполнения кода. То, что я имею в виду, это то, что он не «напиши в EventLog, и, похоже, проблемы с чтением проблем с файла web.config.

Если я вручную добавлю элемент в список календаря, используя мои учетные данные, все работает нормально. То есть у меня есть события в EventLog, и элементы читаются из файла web.config.

Я вижу, где системный счет добавляет элемент в списке календаря. Я пытался добавить системную учетную запись в группы с полным управлением, и у меня все еще возникнут проблема.

Есть ли что-то еще, надо посмотреть, чтобы заставить это работать? Я проверил пользователь бассейна и его сетевой сервис; Я также добавил их в группу.

Я не уверен, где еще искать.

Спасибо

Обновлено (это код, который я использую для записи в EventLog)

try
{
  System.Security.Principal.WindowsImpersonationContext wic = System.Security.Principal.WindowsIdentity.Impersonate(IntPtr.Zero);
  EventLog.WriteEntry(source, message, type);
  wic.Undo();
}
catch (Exception)
{
}
.

Это было полезно?

Решение

Написание eventLog может быть связано с отсутствующими разрешениями Windows.

Задание таймера запускается в службе Windows, которая не имеет Web.config.Приемник событий работает в любом процессе, вызывающем событие.Поэтому, если вы попытаетесь прочитать Web.config текущего процесса, он не удастся.

Если вы попытаетесь протянуть в файловую систему, чтобы прочитать Web.config, то она может снова быть разрешения Windows.

Добавление пользователей в группы SharePoint не может помочь вам в доступе к EventLog или файлам, это объекты Windows не SharePoint объекты.

При работе с задания таймера Impersonate(IntPtr.Zero); ничего не меняется.Это осенствует счету процесса, которая уже работает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top