C# 搜索结果问题
我使用的是C#MVC5。我已经与active directory建立了连接,我正试图通过一个html表单在广告中循环查找用户的详细信息。这篇文章的结果不是预期的。我得到了正确数量的搜索结果,但输出的结果是相同的。如下图所示: 总共2个结果是正确的,但是还有一个Josh Barber,而不仅仅是Josh VanDyke。 代码如下:C# 搜索结果问题,c#,foreach,active-directory,C#,Foreach,Active Directory,我使用的是C#MVC5。我已经与active directory建立了连接,我正试图通过一个html表单在广告中循环查找用户的详细信息。这篇文章的结果不是预期的。我得到了正确数量的搜索结果,但输出的结果是相同的。如下图所示: 总共2个结果是正确的,但是还有一个Josh Barber,而不仅仅是Josh VanDyke。 代码如下: /**********Establish Connection********/ DirectoryEntry di
/**********Establish Connection********/
DirectoryEntry dir = createDirectoryEntry();
DirectorySearcher search = new DirectorySearcher(dir);
/****Refer to class constructor****/
ADUser userAttributes = new ADUser("", "", "", "", "", "", "");
/********Create the List to store results in***************/
List<ADUser> Users = new List<ADUser>();
string DisplayName = "", SAMAccountName = "", Mail = "", Description = "", Division = "", TelephoneNumber = "", FacsimileTelephoneNumber = "";
/*******Filter parameters************/
search.Filter = "(&((&(objectCategory=Person)(objectClass=User)))(anr=" + userName + "* ))";
SearchResultCollection searchresult = search.FindAll();
search.PropertiesToLoad.Add("displayname");
search.PropertiesToLoad.Add("SAMAccountName");
search.PropertiesToLoad.Add("Mail");
search.PropertiesToLoad.Add("Description");
search.PropertiesToLoad.Add("TelephoneNumber");
search.PropertiesToLoad.Add("FacsimileTelephoneNumber");
search.PropertiesToLoad.Add("Division");
/*****************Filtering and populating the List****************/
if (searchresult != null)
{
foreach (SearchResult iResult in searchresult)
{
foreach (string PropertyName in iResult.Properties.PropertyNames)
{
foreach (Object key in iResult.GetDirectoryEntry().Properties[PropertyName])
{
try
{
switch (PropertyName.ToUpper())
{
case "DISPLAYNAME":
DisplayName = key.ToString();
userAttributes.Name = DisplayName;
break;
case "SAMACCOUNTNAME":
SAMAccountName = key.ToString();
userAttributes.DomainUserName = SAMAccountName;
break;
case "MAIL":
Mail = key.ToString();
userAttributes.EmailAddress = Mail;
break;
case "DESCRIPTION":
Description = key.ToString();
userAttributes.JobDescription = Description;
break;
case "TELEPHONENUMBER":
TelephoneNumber = key.ToString();
userAttributes.TelephoneNumber = TelephoneNumber;
break;
case "FACSIMILETELEPHONENUMBER":
FacsimileTelephoneNumber = key.ToString();
userAttributes.FaxNumber = FacsimileTelephoneNumber;
break;
case "DIVISION":
Division = key.ToString();
userAttributes.Division = Division;
break;
}
}
catch { }
}
}
Users.Add(userAttributes);
}
return View(Users);
}
return View();
}
/*******建立连接********/
DirectoryEntry dir=createDirectoryEntry();
DirectorySearcher search=新的DirectorySearcher(dir);
/****请参阅类构造函数****/
ADUser userAttributes=新的ADUser(“,”,“,”,“,”,“,”,”);
/********创建用于存储结果的列表***************/
列表用户=新列表();
字符串DisplayName=“”,SAMAccountName=“”,Mail=“”,Description=“”,Division=“”,TelephoneNumber=“”,FacsimileTelephoneNumber=“”;
/*******滤波器参数************/
search.Filter=“(&(&(&(objectCategory=Person)(objectClass=User))(anr=“+userName+”*)”;
SearchResultCollection searchresult=search.FindAll();
search.PropertiesToLoad.Add(“displayname”);
search.PropertiesToLoad.Add(“SAMAccountName”);
search.PropertiesToLoad.Add(“邮件”);
search.PropertiesToLoad.Add(“说明”);
search.PropertiesToLoad.Add(“电话号码”);
search.PropertiesToLoad.Add(“FacsimileTelephoneNumber”);
search.PropertiesToLoad.Add(“分割”);
/*****************筛选和填充列表***************/
if(searchresult!=null)
{
foreach(SearchResult中的SearchResult iResult)
{
foreach(iResult.Properties.PropertyNames中的字符串PropertyName)
{
foreach(iResult.GetDirectoryEntry().Properties[PropertyName]中的对象键)
{
尝试
{
开关(PropertyName.ToUpper())
{
案例“DISPLAYNAME”:
DisplayName=key.ToString();
userAttributes.Name=DisplayName;
打破
案例“SAMACCOUNTNAME”:
SAMAccountName=key.ToString();
userAttributes.DomainUserName=SAMAccountName;
打破
案例“邮件”:
Mail=key.ToString();
userAttributes.EmailAddress=邮件;
打破
案例“说明”:
Description=key.ToString();
userAttributes.JobDescription=描述;
打破
案例“电话号码”:
电话号码=key.ToString();
userAttributes.TelephoneNumber=电话号码;
打破
案例“FACSIMILETELEPHONENUMBER”:
FacsimileTelephoneNumber=key.ToString();
userAttributes.FaxNumber=FacsimileTelephoneNumber;
打破
“分部”案:
除法=key.ToString();
userAttributes.Division=Division;
打破
}
}
捕获{}
}
}
添加(userAttributes);
}
返回视图(用户);
}
返回视图();
}
您不会重新创建或清理用户属性
// not here
/****Refer to class constructor****/
// ADUser userAttributes = new ADUser("", "", "", "", "", "", "");
...
foreach (SearchResult iResult in searchresult)
{
// but here.
ADUser userAttributes = new ADUser("", "", "", "", "", "", "");
foreach (string PropertyName in iResult.Properties.PropertyNames)
{