Проверьте, является ли DirectoryEntry действительным в DirectorySearcher
Я пытаюсь найти AD в новом домене и новом контроллере домена, так как наша сеть недавно расширилась. Домен, указанный ниже, является доменом, к которому присоединен веб-сервер. Я буду называть это доменом A, и он работает правильно. Когда я изменяю его на domainB, он всегда возвращает результаты из domainA. Я могу поместить новую запись домена или даже любую строку, например "blahblahblah", в DirectorySeracher(), и она возвращает результаты из DomainA. Откатывается ли он к домену, к которому присоединяется веб-сервер, если он не может найти указанный мной домен? Я не получаю никаких ошибок, только результаты из неправильного домена.
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.";
}
1 ответ
Конструктор, который вы использовали DirectorySearcher(string)
фактически ожидает фильтр, но не корневой путь поиска.
DirectorySearcher dssearch = new DirectorySearcher("LDAP://CN=users,DC=LAZARUS,DC=COM");
А во 2-й строке вы перезаписываете значение фильтра
dssearch.Filter = "(&(objectClass=user)(sAMAccountName=" + txtusername.Text + "))";
Так что все, что вы передали в ctor, не имеет никакого эффекта.
Поиск корня для DirectorySearcher
должен быть передан как DirectoryEntry
, Вы можете выбрать наиболее подходящий ctor в следующей ссылке.