我试图通过搜索他们的电子邮件地址并检查Enabled属性来查找用户是否拥有Active Directory帐户(如果我将Enabled返回为true - 运行代码,如果我返回false,则运行其他代码,如果结果为null - 返回false,因为该电子邮件不再存在)。当我进入foreach循环时,它发现用户基于 result 中的电子邮件,但使用if和elses进行检查会将 user 返回为NULL。
public static bool DoesUserExist(string email, string domain)
{
var found = false;
using (PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, domain))
{
UserPrincipal user = new UserPrincipal(domainContext);
user.EmailAddress = email;
PrincipalSearcher search = new PrincipalSearcher(user);
search.QueryFilter = user;
PrincipalSearchResult<Principal> results = search.FindAll();
foreach (Principal result in results)
{
if (user.Enabled == true)
{
found = false;
Helpers.LogMessage("Active Directory Account is Enabled in " + domain + " domain");
}
else if (user.Enabled == false)
{
found = true;
Helpers.LogMessage("Active Directory User Account is Disabled in " + domain + " domain");
}
else if (user.Enabled == null)
{
found = true;
Helpers.LogMessage("No Active Directory Account Found in " + domain + " domain");
}
}
return found;
}
}
如果用户在foreach中启用或已禁用,我错过了什么才能访问?
答案 0 :(得分:1)
您的问题是用户与您的搜索结果或循环无关;它只是搜索的模板。另请注意,如果未找到任何结果,则不会进入循环(TableModelEvent
将为空),因此对results
进行测试毫无意义。此外,您的null
设置似乎有误。
found