NullReferenceException ldapConnection.Connect

本文关键字:Connect ldapConnection NullReferenceException | 更新日期: 2023-09-27 18:08:25

我知道类似的问题已经被问过无数次了。我已经读过了,但我仍然无法弄清这件事的真相。我在我的代码中使用Novell.Directory.Ldap c#库(Winforms, c#)。它的工作原理与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);

当它到达ldapConn.Connect()方法时,我得到一个NullReferenceException。在调试器中逐步执行可以看到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 ldapConnection.Connect

我终于找到了。这是一些非常简单的东西,并且由于是一个不同的项目而必须设置的东西。我需要添加monoo . security .dll和对它的引用