Поиск Active Directory для всех имен пользователей, связанных с адресом электронной почты - PullRequest
3 голосов
/ 14 апреля 2011

У меня есть метод, который ищет в 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";
    }
}

1 Ответ

4 голосов
/ 14 апреля 2011

РЕДАКТИРОВАТЬ: Изменено для вывода в список строк

Вот и мы:

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();

Просто замените вашу логику if (result! = Null) на myne

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...