下面是我的代码:
public List<ActiveDirectory> GetActiveDirectoryUsers(string user = "")
{
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, Constants.DomainName);
if (user == "User")
{
adUsers = GetSpecificGroupUsers(ctx, Constants.UserGroup);
}
else
{
adUsers = GetSpecificGroupUsers(ctx, Constants.AdminGroup);
adUsers = GetSpecificGroupUsers(ctx, Constants.UserGroup);
}
ctx.Dispose();
return adUsers;
}
public List<ActiveDirectory> GetSpecificGroupUsers(PrincipalContext ctx,string groupName)
{
GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, groupName);
if (grp != null)
{
foreach (Principal p in grp.GetMembers(false))
{
if (p.DisplayName != null)
{
adUsers.Add(new ActiveDirectory()
{
UserName = p.DisplayName,
DisplayName = p.SamAccountName
});
}
}
grp.Dispose();
}
return adUsers;
}
上面的代码在 Visual Studio 编辑器中工作(在开发环境中)。但在 IIS 中托管应用程序后,Principal Context 对象返回 null。我使用了表单身份验证而不是 Windows 身份验证,因为我需要自定义登录页面。
此行抛出错误:
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, Constants.DomainName);
其中Constants.DomainName
=“我的域名”。
请让我知道是否有任何方法可以解决它。
感谢阅读并提出一些建议。