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

Я пытаюсь определить, является ли пользователь членом группы Active Directory (AD) для внутреннего приложения ASP.NET 4.0. В приведенном ниже коде выдается сообщение об ошибке "Попытка получить доступ к незагруженному appdomain" в последней строке (оператор возврата) в случае, когда пользователь не является членом группы 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);
}

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

Ответ 1

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

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

           using (DirectoryEntry rootDse = new DirectoryEntry("LDAP://rootdse"))
        {
            var dnsName = rootDse.Properties["dnsHostName"].Value.ToString();
            using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, dnsName)) {}

Ответ 2

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

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

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