C# 如何在Active Directory中获取用户组?

C# 如何在Active Directory中获取用户组?,c#,.net,wpf,active-directory,C#,.net,Wpf,Active Directory,我使用以下代码: List<GroupPrincipal> result = new List<GroupPrincipal>(); // establish domain context PrincipalContext MyDomain = new PrincipalContext(ContextType.Domain); // find your user UserPrincipal user = UserPrincipal.Fin

我使用以下代码:

   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);
         }
      }
   }
列表结果=新列表();
//建立域上下文
PrincipalContext MyDomain=新PrincipalContext(ContextType.Domain);
//查找您的用户
UserPrincipal user=UserPrincipal.FindByIdentity(MyDomain,用户名);
//如果找到-抓取它的组
如果(用户!=null)
{
PrincipalSearchResult groups=user.GetAuthorizationGroups();
//迭代所有组
foreach(组中的主体p)
{
//确保只添加组主体
if(p是GroupPrincipal)
{
结果:添加(p);
}
}
}
但是在这一行(
user.GetAuthorizationGroups()
)上,我遇到了一个异常

此服务器无法运行

在web环境中:

System.Web.HttpContext.Current.Request.LogonUserIdentity.Groups
或者在您的上下文中:

user.GetGroups()

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

如果它能帮助您,请检查此项

更新:


以管理员身份打开Visual Studio,然后打开您的解决方案。然后再试一次。我相信您的问题是由于应用程序许可。

当我从不属于我查询的域的计算机(dev computer)运行一个程序时,我遇到了完全相同的问题。我的意思是,我得到了上下文,我得到了UserPrincipal信息,当我调用GetGroups()时,我得到了相同的错误。在服务器上运行的同一个程序本身工作得很好

我试图让我的开发计算机直接配置域DNS作为第一个DNS,但都是一样的

我试图在主机文件中硬配置域和DC地址,但都是一样的


因此,我从域中的虚拟机远程调试我的程序。

我再次安装Active Directory,问题得到解决…

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

user.getGroups()获取此eror:此服务器未运行您的计算机在域中吗?如果是的话,你和域服务器有联系吗。。。UserPrincipal user=UserPrincipal.FindByIdentity(MyDomain,用户名);“我的用户对象”不为空,并且我的用户配置为空;bool isvalid=pc.ValidateCredentials(用户名、密码);此方法返回了tru for meI,希望在wpf应用程序中使用此cod可以使用尝试使用
user.GetGroups()
而不是
.GetAuthorizationGroups()
-这样做有效吗??user.GetGroups()也有这个例外我认为你的问题是这个线程的重复你的建议链接是为了这个错误:登录失败:未知用户名或错误。但我有一个erorr:“这台服务器无法运行”