Доступ запрещен при попытке прочитать информацию о группах SharePoint
Я пытаюсь получить членство в группе в WSS 3.0. Я делаю это в блоке повышенных разрешений. Вот код:
SPSecurity.RunWithElevatedPrivileges (делегат () { используя (сайт SPSite = новый сайт SPSite(SPContext.Current.Site.ID)) { используя (SPWeb rootWeb = site.RootWeb) { SPGroup gAdmins = rootWeb.SiteGroups["Администраторы"]; } } });
Когда я запускаю этот код, я попадаю на экран SharePoint "отказано в доступе". Группа существует. Идентификатор пула приложений для веб-приложения находится в роли dbo в базе данных контента. Код работает на моем сервере разработки, но не на другом сервере, что наводит меня на мысль, что что-то не так с разрешениями или конфигурацией на этом сервере, может быть, что-то в dcomcnfg?
Вот некоторые строки из журнала SharePoint, которые кажутся связанными:
Проверка PermissionMask не удалась. просят 0x08000000, есть 0x00000000 Произошла неизвестная ошибка SPRequest. Дополнительная информация: 0x80070005 Доступ запрещен для /Pages/UserAdmin.aspx. StackTrace: Microsoft.SharePoint.Utilities.SPUtility: Void HandleAccessDenied (System.Exception), Microsoft.SharePoint.SPGlobal: Void HandleUnauthorizedAccessException (System.UnauthorizedAccessException),....
[UserAdmin.aspx содержит мою пользовательскую веб-часть, содержащую код]
2 ответа
Проблема в этой строке вашего кода "SPSite site = new SPSite (SPContext.Current.Site.ID)" Получите Site.ID вне области RWEP, а затем создайте объект SPSite, передав этот идентификатор. Проблема в том, что SPContext.Current предназначен для реального пользователя, и если вы попытаетесь получить к нему доступ через RWEP, это может вызвать проблемы или непредвиденные ошибки.
Похоже, это происходило потому, что я работал с повышенными привилегиями. Это не расширенный сайт FBA, что означает, что учетные записи домена не имеют и не могут иметь к нему доступ. Когда вы запускаете с повышенными привилегиями, вы работаете как удостоверение пула приложений, которое обычно является учетной записью домена. Затем WSS выдает ошибку, потому что вы внезапно переключились с пользователя FBA на пользователя домена, который не имеет доступа к сайту.
Если вы расширяете сайт для использования проверки подлинности Windows в дополнение к FBA, вы можете предоставить доступ к сайту пользователю домена, и он должен работать.