检查DirectoryEntry在DirectorySearcher中是否有效

本文关键字:是否 有效 DirectorySearcher DirectoryEntry 检查 | 更新日期: 2023-09-27 18:20:43

随着我们的网络最近的扩展,我正在尝试在新的域和新的域控制器上搜索AD。我在下面指定的域是web服务器加入的域。我将把它称为domainA,它可以正常工作。当我将其更改为domainB时,它似乎总是从domainA返回结果。我可以在DirectorySeracher()中放入新的域条目,甚至是任何类似"blahbullah"的字符串,它会从DomainA返回结果。如果找不到我指定的域,它是否会以某种方式回到web服务器加入的域?我没有收到任何错误,只是来自错误域的结果。

      DirectorySearcher dssearch = new DirectorySearcher("LDAP://CN=users,DC=LAZARUS,DC=COM");
      dssearch.Filter = "(&(objectClass=user)(sAMAccountName=" + txtusername.Text + "))";
      SearchResult sresult = dssearch.FindOne();
      if ( sresult != null ){
          lblStatus.Visible = false;    
           DirectoryEntry dsresult = sresult.GetDirectoryEntry();   
           lblfname.Text = dsresult.Properties["givenName"][0].ToString();
           lbllname.Text = dsresult.Properties["sn"][0].ToString();
           lblTitle.Text = dsresult.Properties["description"][0].ToString();
           lblHire.Text = dsresult.Properties["whencreated"][0].ToString();
           pnlForm.Visible = false;
           pnlResults.Visible = true;
           btnReset.Visible = true;
    }else{
           lblStatus.Visible = true;
           lblStatus.Text = "User not found.";
    }

检查DirectoryEntry在DirectorySearcher中是否有效

您使用的DirectorySearcher(string)构造函数实际上需要过滤器,而不是搜索根路径。

DirectorySearcher dssearch = new DirectorySearcher("LDAP://CN=users,DC=LAZARUS,DC=COM");

在第二行中,覆盖过滤器的值

dssearch.Filter = "(&(objectClass=user)(sAMAccountName=" + txtusername.Text + "))";

所以你传递给ctor的任何东西都没有任何效果。

DirectorySearcher的搜索根必须作为DirectoryEntry传递。您可以在下面的链接中选择最合适的ctor。

http://msdn.microsoft.com/en-us/library/system.directoryservices.directorysearcher%28v=vs.110%29.aspx