14

我正在尝试确定用户是否是内部 ASP.NET 4.0 应用程序的 Active Directory (AD) 组的成员。如果用户不是 AD 组的成员,下面的代码会在最后一行(return 语句)引发“尝试访问未加载的 appdomain”异常错误。

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);
}

关于如何修复或其他解决方法的任何想法?

4

2 回答 2

16

这个错误可能是你的问题吗?

我已经使用这种解决方法解决了同样的问题:

           using (DirectoryEntry rootDse = new DirectoryEntry("LDAP://rootdse"))
        {
            var dnsName = rootDse.Properties["dnsHostName"].Value.ToString();
            using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, dnsName)) {}
于 2011-10-26T10:44:57.540 回答
7

这里同样的问题。

它似乎是 ADSI 中的一个错误,已通过修补程序解决。Windows 7 SP1 和 Windows Server 2008 R2 SP1 不包含此修复程序,因此需要在您的开发机器和服务器环境中手动部署它。

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

于 2012-11-27T22:25:38.587 回答