Итак, я с ума сходил, пытаясь понять, почему я не могу заставить мой LDAP-поиск работать.ASP.NET Bind and Query LDAP
private String getDNFromLDAP(String strUID)
{
String strDN = "";
//Create an LDAP Entry Object
DirectoryEntry entry = new DirectoryEntry("LDAP://something.blah.com/cn=people,dc=blah,dc=com");
entry.AuthenticationType = AuthenticationTypes.SecureSocketsLayer;
entry.Username = "cn=myaccount,cn=special,dc=blah,dc=com";
entry.Password = "supersecret";
DirectorySearcher mySearcher = new DirectorySearcher(entry);
mySearcher.SearchScope = SearchScope.Subtree;
mySearcher.Filter = "(uid=" + strUID + ")";
SearchResult result = mySearcher.FindOne();
int nIndex = result.Path.LastIndexOf("/");
strDN = result.Path.Substring((nIndex + 1)).ToString().TrimEnd();
//Clean up objects
entry.Close();
entry.Dispose();
mySearcher.Dispose();
//returns the DN
return strDN;
}
Я знаю, что объект Я ищу существует (подтвержденное ldapsearch), но мой результат продолжает возвращаться пустым. Я подозреваю, что есть проблема с базой dn, но я не знаю, как подтвердить, что использует DirectorySearch в качестве базы dn. Любая помощь вообще будет оценена по достоинству.
Как я понял, конструктор DirectorySearcher, который я использую, принимает значение my DirectoryEntry и использует его для установки свойства searchroot. http://msdn.microsoft.com/en-us/library/y49s2h23.aspx Я ошибаюсь? – DR913
Вы правы. Мои мысли были, так как это корень поиска, возможно, ваш поиск не смог найти запись, которую вы искали. Вы можете подтвердить это, изменив корень поиска на родительский узел и увидев, как вы это делаете. –
После трех дней борьбы с этим кодом, оказалось, что у меня была проблема с разрешениями. Выяснил это, изменив корень поиска. – DR913