2014-02-11 6 views
0

Active Directory에서 사용자 정보를 읽는 작은 응용 프로그램을 개발했습니다. 응용 프로그램의 시작 부분에서 나는 아래의 필터LDAP OR 조건 - 잘못된 필터

search.Filter = "(&((&(objectCategory=Person)(objectClass=User)))(displayName=*" + username + "*))";

이 잘 작동을 사용했다.

이제 사용자 이름이나 사무실 또는 제목 필드를 기반으로 직원 세부 정보를 검색 할 수있는 옵션을 사용자에게 제공하고 있습니다.

세부 정보를 얻는데 사용 된 쿼리는 다음과 같지만 작동하지 않습니다. 그것은 던져 예외는

"필터가 잘못 검색."

(&((&(objectCategory=Person)(objectClass=User)))(|((displayName=*" + username + "*)(l = *" + location + "*)(title=*" + title + "*))))"; 

예 : 위치에 따라 직원의 세부 사항을 retieve : 하이데라바드 을 런타임 쿼리가이

(&((&(objectCategory=Person)(objectClass=User)))(|((displayName=**)(l = *hyder*)(title=**)))

처럼 보인다

검색 필터가 올바르지 않습니다.

+0

C# 언어 태그를 그대로두고 제목에 넣지 마십시오! – Filburt

답변

0

나는 당신의 의도가 명확하지이기 때문에, 당신이 찾고있는 것은 이상과 같은이며, 생각 :

(& (수 objectcategory = 사람) (방법 objectClass = 사용자) (| (나 displayName = ) (L = 위치) (제목 = 제목))) 대신 표시된 값의 코드 매개 변수에 넣어해야 물론

Which could be visualized as: 
(& 
    (objectCategory=Person) 
    (objectClass=User) 
    (| 
     (displayName=*sam*) 
     (l=*location*) 
     (title=*title*) 
    ) 
) 

.