Проблемы Active Directory с использованием IIS7 в Windows Server 2008 R2 - PullRequest
2 голосов
/ 12 мая 2011

В веб-приложении, над которым я работаю, используются идентификаторы пользователей и групп из Active Directory.То есть пользователи могут наследовать доступ к некоторым частям приложения (в частности, к отчетам) в зависимости от их членства в группах AD.

Итак, мы используем GUID пользователя и GUID группы в качестве ключа для отслеживания базы данных.доступ к функциям.

Приложение отлично работает в среде разработки (IIS7 работает на Windows 7).Но когда я пытаюсь настроить сайт в моей тестовой среде (IIS7, работающей на Windows Server 2008 R2), я получаю следующую ошибку:

Невозможно привести объект типа '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

Есть идеи?

...