caffrey_1 Ответов: 1

Проблема запроса LDAP с VB.NET


Я запускаю небольшой фрагмент кода, который заполняет выпадающий список из запроса LDAP. Он проверяет, начинается ли данное имя или фамилия с введенной буквы.

S вернет Сару или Смита
См вернется просто Смит

но не в том случае, если должность = leaver

Код работает нормально, за исключением тех случаев, когда я хочу добавить не в запрос

Эта работа :-

osearcher.Filter = "(|(givenname=" & Label1.Text.ToString & "*)(sn=" & Label1.Text.ToString & "*))"


Но это не так :-

osearcher.Filter = "(|(givenname=" & Label1.Text.ToString & "*)(sn=" & Label1.Text.ToString & "*))(!(title=leaver))"




Я получаю сообщение об ошибке "служба каталогов недоступна"

Есть идеи ? Я использую поле Название работы LDAP только для исключения определенного подразделения

Что я уже пробовал:

Я вырезал и вставил запрос в пользовательский поиск active directory, и он работал нормально

(например, результат выглядит следующим образом
(|(givenName=a*)(sn=a*))(!(title=leaver))

1 Ответов

Рейтинг:
11

caffrey_1

Тьфу как только я подал заявку я все исправил :)

Похоже, что с vb.net вам нужно начать запрос с амперсанда, например

osearcher.Filter = "(&(|(givenname=" & Label1.Text.ToString & "*)(sn=" & Label1.Text.ToString & "*))(!(title=leaver)))"


Richard Deeming

Не только VB.NET -похоже, это стандартный синтаксис из RFC2254.
Синтаксис Фильтра Поиска (Windows)[^]

Я подозреваю, что пользовательский поиск молча оборачивает условия в (&...) быть полезным". :)