Доступ запрещен при попытке прочитать информацию о группах 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, вы можете предоставить доступ к сайту пользователю домена, и он должен работать.

Другие вопросы по тегам