我使用此代码:
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()
)我得到了一个例外
此服务器无法运行
答案 0 :(得分:1)
在网络环境中:
System.Web.HttpContext.Current.Request.LogonUserIdentity.Groups
或在您的背景下:
user.GetGroups()
答案 1 :(得分:1)
根据我的记忆,异常可能是因为无法使用任何可用的DNS解析域名。确保它是,并且异常消失。
答案 2 :(得分:1)
检查这是否可以帮助您 http://support.microsoft.com/kb/842789
更新:
以管理员的身份打开Visual Studio,然后打开解决方案。然后再试一次。我相信你的问题是因为应用程序的存在。
答案 3 :(得分:0)
当我从计算机(开发计算机)运行我的程序时,我遇到了同样的问题,不属于到我查询的域。我的意思是我得到了上下文,我得到了UserPrincipal信息,当我调用GetGroups()时我遇到了同样的错误。在服务器上运行的相同程序可以很好地工作。
我试图让我的开发计算机直接配置域DNS作为第一个DNS,但它是相同的。
我尝试在主机文件中硬配置域和DC地址,但它是相同的。
所以我从域中的虚拟机远程调试我的程序。
答案 4 :(得分:0)
我再次安装Active Directory并解决了我的问题......
答案 5 :(得分:0)
您尝试抓取GetGroups中包含的其中一个组是管理员组,需要特殊权限。尝试在上下文中设置用户/密码并使用getGroups(context)