1

Я пытаюсь выполнить поиск в моей организации. Активный каталог для пользователей.Поиск пользователей в Active Directory на основе имени, фамилии и имени дисплея

Если FirstName или LastName или отображаемое_имя соответствует определенному значению строки, она должна возвращать пользователь.

Мой код:

// create your domain context 
PrincipalContext ctx = new PrincipalContext(ContextType.Domain); 

UserPrincipal qbeUser = new UserPrincipal(ctx); 
qbeUser.GivenName = "Ramesh*"; 
// qbeUser.Surname = "Ramesh*"; 
// qbeUser.DisplayName= "Ramesh*";  

PrincipalSearcher srch = new PrincipalSearcher(qbeUser); 

// find all matches 
foreach(var found in srch.FindAll()) 
{ 
    // 
} 

Проблема заключается в том, что я могу найти только один фильтр.

Я могу И фильтры, но не ИЛИ. Доступны ли какие-либо решения?

+1

См. [Возможное решение этой проблемы здесь] (http://stackoverflow.com/questions/3195124/ambiguous-name-resolution-anr-ma-equivalent-in-net-3-5-directoryservices-ac) - используя расширяемость 'UserPrincipal' для доступа к свойству' anr' (неоднозначное разрешение имен), которое позволяет выполнять поиск по нескольким свойствам, связанным с именем –

+0

@marc_s: Спасибо за решение. Он работает правильно. Можете ли вы опубликовать это как ответ. Чтобы я мог принять это? –

ответ

2

See a possible solution for this issue in this other SO question.

Вам нужно будет использовать расширяемость UserPrincipal создать класс-потомок, для того, чтобы получить доступ к anr собственности (ANR = неоднозначного разрешения имен), который позволяет осуществлять поиск в нескольких имен связанных свойств сразу.

+0

Эта ссылка (http://msdn.microsoft.com/en-us/library/cc223243.aspx) помогла мне найти больше о неоднозначном разрешении имен (ANR). –