0

随着我们的网络最近扩展,我正在尝试在新域和新域控制器上搜索 AD。我在下面指定的域是 Web 服务器加入的域。我将其称为 domainA 并且它可以正常工作。当我将其更改为 domainB 时,它似乎总是从 domainA 返回结果。我可以将新域条目甚至任何字符串(如“blahblahblah”)放入 DirectorySeracher() 中,它会从 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.";
    }
4

1 回答 1

1

您使用的构造函数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

于 2014-11-25T16:18:04.247 回答