2010-09-09 3 views
3

При попытке найти пользователя на сервере LDAP, я получаю следующее сообщение об ошибке «Неизвестная ошибка (0x8000500c)»Как найти пользователя на сервере LDAP

Это код, я использую:

PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, "gandalf.intrafg"); 
UserPrincipal p = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, "Consultor1"); 

Как представляется, следующий фрагмент кода работает (исключение не генерируется), но имя samAccountName встречается как массив байтов. Кто-нибудь знает почему?

DirectoryEntry entry = new DirectoryEntry("LDAP://gandalf.intrafg"); 

DirectorySearcher searcher = new DirectorySearcher(entry); 

//searcher.PropertiesToLoad.Add("givenName"); 
//searcher.PropertiesToLoad.Add("sn"); 
searcher.PropertiesToLoad.Add("samAccountName"); 

searcher.Filter = "(&(objectCategory=person)(samAccountName=Consultor1))"; 

SearchResult result = searcher.FindOne(); 
+0

Я использовал LDAP-запросы, но я не знаком с запросом, который вы использовали. Является вашим "(& (objectCategory = person) (samAccountName =" = "+ UserId +")) "valid? – Aliostad

+0

Да, как я уже сказал, второй блок кода работает ... –

ответ

0

Ваш второй блок кода работает просто отлично, я однако сделал не передать имя домена в DirectoryEntry инициализаторе.

Directory entry = new DirectoryEntry(); 
//other code 
result.Properties["samAccountName"][0].ToString(); 
0

Код, который у вас должен быть в порядке - он работает для меня, без проблем.

Однако вы не говорят нам, что вы заполнить для domain_name здесь:

PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, "domain_name"); 

или userId здесь:

UserPrincipal p = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, UserId); 

domain_nameдолжен быть в "старой" NetBIOS стиль, например FABRIKAM - нет DNS-стиля, такого как fabrikam.com или AD-стиль, например dc=fabrikom,dc=com или даже полный путь LDAP.

userId должно быть действительным именем учетной записи SAM, например. Максимум. из 20 символов, букв и цифр (кроме нескольких действительных специальных символов).

Выполняете ли вы эти требования?

+0

Хорошо, я обновил код до отражают переменные, которые я использую ... –

+0

@ bastos.sergio: как я и ожидал - вы не используете правильное имя домена NetBIOS - у вас должно быть доменное имя, такое как «GANDALF» или что-то в этом роде - просто одно слово, никаких точек в нем - доменное имя «старого стиля» от времени до Active Directory. –

+0

Если я поставлю GANDALF, я получаю ту же ошибку, что и выше. Если я поставлю INTRAFG, я получаю сообщение об ошибке «Сервер не смог свяжитесь с « –

Смежные вопросы