Делает ли SPSecurity.RunWithElevatedPrivileges что-нибудь в консольном приложении?
-
02-07-2019 - |
Вопрос
Судя по тому, что я узнал из рефлектора, RunWithElevatedPriveleges просто возвращает идентификатор текущего потока к базовому (неолицетворенному) идентификатору.Это имеет смысл в случае кода, выполняющегося внутри пула приложений WSS, поскольку базовая учетная запись службы является суперпользователем.Имеет ли это какой-либо эффект при запуске во внешнем (консольном или служебном) приложении, когда олицетворение не существует?Думаю, что нет, но хотелось бы знать наверняка.В гугле я видел разные мнения по этому поводу.
Решение
Обычно Runwithelevatedprivileges запускает ваш код как удостоверение пула приложений, но это не работает с консоли.В этом случае мы либо использовали беги как или установить личность запланированной задачи в ту же учетную запись, что и идентификация пула приложений.
Другие советы
Я думаю, было бы, если бы вы запустили исполняемый файл под одной учетной записью, а затем изменили его учетные данные с помощью кода (как это делает SP).В противном случае он не сможет получить разрешения, которых у него не было при запуске, без какого-либо способа создания объекта Credentials.
RunWithElevatedPriveleges не работает, если HTTPContext имеет значение null.В консоли HTTPContext имеет значение null.