Предыстория этого вопроса заключается в том, что моей текущей задачей является разработка страницы приложения, которая позволяет пользователям создавать семейства веб-сайтов. Свойства семейства веб-сайтов считываются из элемента списка. Мое решение работает в большинстве случаев. Тем не менее, есть одна конфигурация идентификаторов пула приложений, в которой отказано в доступе, и я хотел бы понять, почему это происходит.
(Очень) урезанная версия моего кода выглядит так:
SPSecurity.RunWithElevatedPrivileges(delegate { try
{
SPWebApplication webApp = this.Web.Site.WebApplication;
SPSiteCollection siteColl = webApp.Sites;
SPSite newSite = siteColl.Add(mngPath + siteUrl, siteName, siteDesc, LocaleId,
null, primarySiteAdmin, String.Empty,
String.Empty));
});
Исключение UnauthorizedAccessException выдается, когда Identities установлены следующим образом:
Центр администрирования SharePoint v4 --> локальный домен\учетная запись администратора
SharePoint - 80 --> Сетевая служба
Все остальные комбинации NetworkService и домен\учетная запись администратора работают. У кого-нибудь есть объяснение этому?
ОБНОВЛЕНИЕ
Я предполагаю, что вам нужно запустить свой пул приложений sharepoint, используя того же пользователя, что и пул приложений центрального администрирования, чтобы иметь достаточные права на БД. Но это все равно не объясняет, почему он работает в следующей конфигурации:
Центр администрирования SharePoint v4 --> NetworkService
SharePoint – 80 --> локальный домен\учетная запись администратора
Кстати, еще один вопрос по SA дает решение (и некоторые подробности проблемы). См. раздел Разрешение на предоставление нового семейства веб-сайтов через рабочий процесс.