我知道类似的问题已经被问了一百万次。我读过它们,但我仍然无法深究。我在我的代码中使用Novell.Directory.Ldap c#库(Winforms,c#)。它与Microsoft ldap库非常相似,但它也可以访问特定于Novell eDirectory的属性。NullReferenceException ldapConnection.Connect
using 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和password)放入对象中。
那段代码直接从我使用/写入的另一个程序中复制,它的工作原理非常好,所以我不知道为什么它不能在这个程序中工作。唯一的区别是这是Visual Studio中的一个不同的项目。
鉴于这种情况,我已经试过经历的事情再次,可能是不同的,因为它是一个不同的项目:
我试过验证的参考Novell提供的项目。我相当肯定,部分必须工作,因为内存中的对象是正确的类型,并有一堆属性,我的程序没有告诉它,所以他们必须来自该dll文件。
SSL证书存在于我的计算机上,因为.net可以找到它,因为这是与开发成功连接LDAP的程序相同的计算机。
我在误解什么?看来它必须是非常简单的东西。
可能重复[什么是NullReferenceException,我该如何解决它?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-doi-i-fix-它) – Nasreddine 2015-10-04 09:07:46