0

我正在尝试获得 WSS 3.0 中某个组的成员资格。我在提升的权限块中执行此操作。这是代码:

SPSecurity.RunWithElevatedPrivileges(委托()
{
   使用(SPSite 站点 = 新 SPSite(SPContext.Current.Site.ID))
   {
      使用(SPWeb rootWeb = site.RootWeb)
      {
         SPGroup gAdmins = rootWeb.SiteGroups["Admins"];
      }
   }
});

运行此代码时,我会进入“拒绝访问”SharePoint 屏幕。该组存在。Web 应用程序的应用程序池的标识是内容数据库中的 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 托管包含代码的自定义 Web 部件]

4

2 回答 2

1

这行代码中的问题“SPSite site = new SPSite( SPContext.Current.Site.ID )”获取 RWEP 范围之外的 Site.ID,然后通过传递该 ID 创建 SPSite 对象。问题是因为 SPContext.Current 是针对实际用户的,如果您尝试在 RWEP 下访问它,它可能会给您带来问题或意外错误。

于 2010-04-14T03:18:43.420 回答
0

看起来这种情况正在发生,因为我以提升的权限运行。这是一个非扩展的 FBA 站点,这意味着域帐户没有也不能对其进行任何访问。当您以提升的权限运行时,您以应用程序池身份运行,这通常是域帐户。WSS 然后抛出一个错误,因为您突然从 FBA 用户切换到无权访问该站点的域用户。

如果您扩展站点以使用除 FBA 之外的 Windows 身份验证,您可以向域用户授予对该站点的访问权限,并且它应该可以工作。

于 2009-11-12T21:10:59.553 回答