Определите, находится ли пользователь в группе AD для приложения .NET 4.0 - PullRequest
14 голосов
/ 24 августа 2011

Я пытаюсь определить, является ли пользователь членом группы Active Directory (AD) для внутреннего приложения ASP.NET 4.0.Приведенный ниже код выдает ошибку «Попытка доступа к незагруженному домену приложения» в последней строке (инструкция возврата) в случае, когда пользователь не является членом группы AD.

public static bool IsInADGroup(string userName, string groupName)
{
    var principalContext = new PrincipalContext(ContextType.Domain);
    UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(principalContext, userName);
    if (userPrincipal == null)
        return false;

    GroupPrincipal groupPrincipal = GroupPrincipal.FindByIdentity(principalContext, groupName);
    if (groupPrincipal == null)
        return false;

      return userPrincipal.IsMemberOf(groupPrincipal);
}

Любые идеи покак исправить или другие обходные пути?

Ответы [ 2 ]

15 голосов
/ 26 октября 2011

Может ли эта ошибка быть вашей проблемой?

Я решил те же проблемы, используя этот обходной путь:

           using (DirectoryEntry rootDse = new DirectoryEntry("LDAP://rootdse"))
        {
            var dnsName = rootDse.Properties["dnsHostName"].Value.ToString();
            using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, dnsName)) {}
7 голосов
/ 28 ноября 2012

Та же проблема здесь.

Кажется, это ошибка в ADSI, которая была исправлена ​​с помощью исправления.Windows 7 с пакетом обновления 1 (SP1) и Windows Server 2008 R2 с пакетом обновления 1 (SP1) не содержат исправления, поэтому его необходимо будет вручную развернуть на компьютерах разработки и в серверных средах.

http://support.microsoft.com/kb/2683913

...