NullReferenceException ldapConnection.Connect

Я знаю, что подобные вопросы задавались миллион раз. Я читал их, и я до сих пор не могу понять суть этого. Я использую библиотеку С# Novell.Directory.Ldap в своем коде (Winforms, С#). Он работает очень похоже на библиотеки Microsoft ldap, но также может обращаться к атрибутам, характерным для Novell eDirectory.

использование Novell.Direcotry.Ldap; находится там. Я также добавил ссылку и указал ее на файл Novell.Directory.Ldap.dll.

string LDAPServerIP = "12.34.56.78";
string serverUserName = "cn=Rrunner,o=acme";
string serverPassword = "@nvi1";

LdapConnection ldapConn = new LdapConnection();
MessageBox.Show(ldapConn.ToString());
ldapConn.SecureSocketLayer = true;
ldapConn.Connect(LDAPServerIP, 636);
ldapConn.Bind(serverUserName, serverPassword);

Я получаю исключение NullReferenceException, когда оно переходит к методу ldapConn.Connect(). Проходя через отладчик, можно увидеть объект ldapConn, и это объект Novell.Directory.Ldap.LdapConnection, и, похоже, ему назначены разумные значения. Например, для SSL установлено значение true, а в момент исключения для переменной Host(string) уже установлено значение LDAPServerIP, а для параметра Port(int) установлено значение 636, как и в ldapConn.Connect( ) заказал. Учитывая эту информацию, я помещаю try/catch только на этот оператор, чтобы обойти его, поскольку он в любом случае помещает атрибут. Затем он также получит исключение в методе Bind(), и bind также поместил соответствующие значения (userDN и пароль) в объект.

Этот фрагмент кода я скопировал непосредственно из другой программы, которую я использую/пишу, и он прекрасно работает в ней, поэтому я не знаю, почему он не должен работать в этой программе. Единственная разница в том, что это другой проект в Visual Studio.

Учитывая это, я попытался снова пройтись по вещам, которые могли отличаться, потому что это другой проект:

Я попытался проверить, что ссылка на поставленный Novell есть в проекте. Я почти уверен, что эта часть должна работать, потому что объект в памяти имеет правильный тип и имеет кучу атрибутов, о которых моя программа не сообщает, поэтому они должны были исходить из этого файла dll.

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

Что мне не хватает? Кажется, что это должно быть что-то очень простое.


person GC78    schedule 10.04.2013    source источник
comment
Возможный дубликат Что такое NullReferenceException и как его исправить это?   -  person Nasreddine    schedule 04.10.2015


Ответы (1)


Я нашел это наконец. Это было что-то очень простое, и что-то, что нужно было установить из-за того, что это был другой проект. Мне нужно было добавить Mono.Security.dll и ссылку на нее.

person GC78    schedule 10.04.2013