从AD获取用户详细信息

时间:2014-01-22 18:31:06

标签: c# active-directory

在我的模块中,我有一个TextBox,Button和ListBox。每当按下按钮时,我必须获取用户的详细信息(从文本框中提取),我需要在列表框中添加。这个现在正在运作。

我的问题是,如果我按下按钮,第一次没有任何反应 - 但如果再次按下相同的按钮,我会在列表框中获得用户名的值。

请帮我确定为什么它不能在第一次点击时工作的实际原因。截至目前,我为每条记录点击了两次。

protected void Add_Click(object sender, EventArgs e)
{

    try
    {
        DirectoryEntry entry1 = new DirectoryEntry("LDAP://corp.com", "123456", "password");           
        DirectorySearcher dSearch1 = new DirectorySearcher(entry1);           
        dSearch1.Filter = "(&(objectClass=user)(samAccountName=" + Additional_ID.Text + "))";
        dSearch1.PropertiesToLoad.Add("cn");
        dSearch1.PropertiesToLoad.Add("mail");
        SearchResult result = dSearch1.FindOne();

        if (result.Properties["mail"] != null)
        {
            ListItem L = new ListItem();
            L.Text = "" + result.Properties["cn"][0].ToString();
            L.Value = "" + result.Properties["mail"][0].ToString();
            New_Users_list.Items.Add(L);
            Additional_ID.Text = "";
        }
        entry1.Close();
        dSearch1.Dispose();
    }
    catch
    {
        Additional_ID.Text = "Enter Valid ID";
    }
}

1 个答案:

答案 0 :(得分:0)

如果您使用的是.NET 3.5及更高版本,则应查看System.DirectoryServices.AccountManagement(S.DS.AM)命名空间。在这里阅读所有相关内容:

基本上,您可以定义域上下文并轻松在AD中查找用户和/或组:

// set up domain context
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
{
    // find a user
    UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");

    if(user != null)
    {
       // do something here....     
    }
}

新的S.DS.AM让您可以轻松地与AD中的用户和群组一起玩!