Проблема разрешений с использованием Spjobdefinition
-
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);
ничего не меняется.Это осенствует счету процесса, которая уже работает.