在Windows Server 2008 R2中使用IIS7的Active Directory问题

时间:2011-05-12 15:37:27

标签: iis-7 active-directory windows-server-2008

我正在使用的网络应用程序使用Active Directory中的用户ID和组ID。也就是说,用户可以根据他们在AD群组中的成员身份继承对应用程序某些部分(特别是报告)的访问权限。

因此,我们使用用户的GUID和组的GUID作为数据库跟踪功能访问的关键。

App在开发环境(Windows 7上运行的IIS7)上运行良好。但是当我尝试在我的测试环境中设置网站(在Windows Server 2008 R2上运行IIS7)时,我收到以下错误:

无法将“System.DirectoryServices.AccountManagement.GroupPrincipal”类型的对象强制转换为“System.DirectoryServices.AccountManagement.UserPrincipal”。

从堆栈跟踪中看来,有罪的代码是:

public string UserGUID
{
     get
     {
    return UserPrincipal.Current.Guid.ToString();
     }
}

我也在一个方法中访问GroupPrincipals,该方法获取特定用户所属的所有组:

public ArrayList Get_UserGroupGUIDs(string username)
{
     ArrayList oList = new ArrayList();
     // "company" is the domain we would like to search in
     using ( PrincipalContext ctx = new PrincipalContext ( ContextType.Domain, "isidc.com" ) )
     { 
    // get the user of that domain by his username, within the context
    using ( UserPrincipal up = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, username))
    {
              if (up != null)
              {
                  // fetch the group list
                  using (PrincipalSearchResult<Principal> Groups = up.GetAuthorizationGroups())
                  {
                      foreach (GroupPrincipal g in Groups)
                      {
                          oList.Add(g.Guid.ToString());
                      } // end foreach
                  } // end using
              } // end if
    } // end using
    return oList;
} // end method Get_UserGroupGUIDs

有什么想法吗?

0 个答案:

没有答案