Проверьте, является ли 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 в следующей ссылке.

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

Другие вопросы по тегам