检查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.";
}
您使用的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