在Active Directory中搜索与电子邮件地址相关的所有用户名称

问题描述:

我有一种方法根据电子邮件地址在Active Directory中搜索用户名。有些情况下,给定的电子邮件地址可能有多个用户名,我正试图捕获这些用户名。我重写了我的方法,但似乎无法使语法正确。这个问题是我相信的。在Active Directory中搜索与电子邮件地址相关的所有用户名称

foreach (Object myObject in result.Properties[property]) 

感谢,

杰森

private String FindNameByEmail(string emailAddress) 
{ 
    DirectoryEntry entry = GetDirectoryEntry(); 
    emailAddress = txtEmailID.Text; 

    DirectorySearcher search = new DirectorySearcher(entry); 
    search.Filter = "(&(objectCategory=person)(sAMAccountName=*)(mail=" + emailAddress + "))"; 

    string[] properties = new string[] { "SAMAccountName" }; 
    foreach (String property in properties) 
     search.PropertiesToLoad.Add(property); 
    SearchResultCollection result = search.FindAll(); 

    if (result != null) 
    { 
     foreach (String property in properties) 
      foreach (Object myObject in result.Properties[property]) 
       lblUserName.Text = myObject.ToString(); 
     return "User Found"; 
    } 
    else 
    { 
     lblStatus.Text = "user does not exist"; 
     return "User Does Not Exist"; 
    } 
} 
+0

'GetDirectoryEntry()'? – 2013-09-26 15:25:45

编辑:将其改为输出到字符串

下面的列表,我们去:

List<string> usernames = new List<string>(); 
if (result != null) 
{ 
    foreach (SearchResult sr in result) 
    { 
     usernames.Add((string)sr.Properties["SAMAccountName"][0]); 
    } 
} 
listBox1.DataSource = usernames; //Where listbox is declared in your markup 
listBox1.DataBind(); 

只需用myne替换你的if(result!= null)逻辑

+0

感谢您的回复。它现在返回与电子邮件地址关联的活动目录中的最后一个用户名。我只有6个用户,并有4个与电子邮件相关联。 – Jason 2011-04-14 16:28:54

+0

当我运行调试,并逐步通过结果,我可以看到每个用户名,我期待。但只有最后一个被写出来。 – Jason 2011-04-14 16:51:32

+0

这会将所有的用户写在屏幕上Response.Write(users +“
”); – Jason 2011-04-14 17:15:13