代码之家  ›  专栏  ›  技术社区  ›  strongopinions

尝试读取有关SharePoint组的信息时拒绝访问

  •  0
  • strongopinions  · 技术社区  · 16 年前

    我想成为WSS 3.0中的一个组的成员。我正在提升权限块中执行此操作。代码如下:

    SPSecurity.RunWithElevatedPrivileges(delegate()
    {
       using (SPSite site = new SPSite(SPContext.Current.Site.ID))
       {
          using (SPWeb rootWeb = site.RootWeb)
          {
             SPGroup gAdmins = rootWeb.SiteGroups["Admins"];
          }
       }
    });
    

    运行此代码时,我会被带到“拒绝访问”SharePoint屏幕。 这个群体存在。web应用程序的应用程序池的标识位于内容数据库中的dbo角色中。 代码在我的开发服务器上工作,但在另一台服务器上不工作,这使我认为此服务器上的权限或配置有问题,可能是dcomcnfg中的问题?

    以下是来自SharePoint日志的一些行,它们似乎是相关的:

    PermissionMask check failed. asking for 0x08000000, have 0x00000000    
    Unknown SPRequest error occurred. More information: 0x80070005   
    Access Denied for /Pages/UserAdmin.aspx. StackTrace: Microsoft.SharePoint.Utilities.SPUtility:Void HandleAccessDenied(System.Exception), Microsoft.SharePoint.SPGlobal:Void HandleUnauthorizedAccessException(System.UnauthorizedAccessException), ....

    [UserAdmin.aspx托管包含代码的自定义web部件]

    2 回复  |  直到 16 年前
        1
  •  1
  •   Sandy    16 年前

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

        2
  •  0
  •   strongopinions    16 年前

    好像是这样的 因为 我的特权被提升了。这是一个非扩展的FBA站点,这意味着域帐户不能也不能访问它。当您以提升的权限运行时,您将作为应用程序池标识运行,该标识通常是域帐户。WSS然后抛出一个错误,因为您突然从一个FBA用户切换到一个无法访问该站点的域用户。

    如果将站点扩展为除FBA外使用Windows身份验证,则可以将对站点的访问权限授予域用户,并且该权限应有效。

    推荐文章