【问题标题】:How to get the groups of a user in Active Directory?如何在 Active Directory 中获取用户的组?
【发布时间】:2011-10-11 10:33:47
【问题描述】:

我从这段代码中使用:

   List<GroupPrincipal> result = new List<GroupPrincipal>();

   // establish domain context
   PrincipalContext MyDomain = new PrincipalContext(ContextType.Domain);

   // find your user
   UserPrincipal user = UserPrincipal.FindByIdentity(MyDomain , username);

   // if found - grab its groups
   if(user != null)
   {
      PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups();

      // iterate over all groups
      foreach(Principal p in groups)
      {
         // make sure to add only group principals
         if(p is GroupPrincipal)
         {
             result.Add(p);
         }
      }
   }

但是在这一行(user.GetAuthorizationGroups())我遇到了一个异常

此服务器无法运行

【问题讨论】:

  • 我想在 wpf 应用程序中使用这个 cod
  • 可以尝试使用user.GetGroups() 而不是.GetAuthorizationGroups() - 可以吗??
  • user.GetGroups() 也有这个异常
  • 我认为您的问题与此线程 stackoverflow.com/questions/5526569/… 重复

标签: c# .net wpf active-directory


【解决方案1】:

在网络环境中:

System.Web.HttpContext.Current.Request.LogonUserIdentity.Groups

或在您的上下文中:

user.GetGroups()

MSDN

【讨论】:

  • user.GetGroups() like user.GetAuthorizationGroups() 得到这个错误:这个服务器不是可操作的
  • 您的计算机在域中吗?如果是,您是否与域服务器有连接?
  • ya... UserPrincipal user = UserPrincipal.FindByIdentity(MyDomain , username);我的用户对象不为空,并且拥有我的用户信息;
  • bool isvalid=pc.ValidateCredentials(username,password);这个方法为我返回了 tru
【解决方案2】:

据我所知,该异常可能是由于无法使用任何可用的 DNS 解析域名造成的。确保它是并且异常消失。

【讨论】:

    【解决方案3】:

    如果它可以帮助你,请检查它 http://support.microsoft.com/kb/842789

    更新:

    Administrator 身份打开 Visual Studio,然后打开您的解决方案。然后再试一次。我相信你的问题是因为申请许可。

    【讨论】:

    • 您的建议链接针对此错误:登录失败:未知用户名或错误。但我有这个错误:“此服务器无法运行”
    【解决方案4】:

    当我从计算机(开发计算机)不属于我查询的域运行我的程序时,我遇到了完全相同的问题。我的意思是我得到了上下文,我得到了 UserPrincipal 信息,当我调用 GetGroups() 时我得到了同样的错误。在服务器本身上运行的相同程序可以完美运行。

    我试图设法让我的开发计算机直接将域 DNS 配置为第一个 DNS,但它是一样的。

    我尝试在 hosts 文件中硬配置域和 DC 地址,但结果相同。

    所以我从域中的虚拟机远程调试我的程序。

    【讨论】:

      【解决方案5】:

      我再次安装我的 Active Directory 并解决了我的问题...

      【讨论】:

        【解决方案6】:

        GetGroups 中包含的您尝试抓取的组之一是管理员组,需要特殊权限。尝试在您的上下文中设置用户/密码并使用 getGroups(context)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-07-15
          • 1970-01-01
          • 2018-06-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多