2014-09-03 3 views
0

네트워크가 최근에 확장되어 있으므로 새 도메인 및 새 도메인 컨트롤러에서 AD를 검색하려고합니다. 아래에서 지정하는 도메인은 웹 서버가 연결된 도메인입니다. 나는 domainA로 이것을 참조 할 것이고 올바르게 작동 할 것이다. domainB로 변경하면 항상 domainA의 결과가 반환됩니다. DirectorySeracher() 안에 새로운 도메인 항목이나 심지어 "blahblahblah"와 같은 문자열을 넣을 수 있으며 DomainA의 결과를 반환합니다. 웹 서버가 도메인을 찾지 못하면 어떻게 든 도메인에 속하는 것입니까? 나는 어떤 오류도 발생시키지 않는다. 잘못된 도메인에서 나온 결과이다.DirectoryEearry가 DirectorySearcher에서 유효한지 확인하십시오.

 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."; 
    } 
+0

진심으로, 나는 DirectorySearcher ("blahblahblah")을 넣을 수 있습니다; 그리고 그것은 오류가 아니며, 왜 안됩니까? – user1633947

답변

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

관련 문제