首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NullReferenceException ldapConnection.Connect

NullReferenceException ldapConnection.Connect
EN

Stack Overflow用户
提问于 2013-04-11 01:37:14
回答 1查看 821关注 0票数 2

我知道类似的问题已经被问了一百万次了。我已经读过了,但我仍然不能弄清楚这件事的真相。我在我的代码(Winforms、c#)中使用了Novell.Directory.Ldap c#库。它的工作方式与microsoft ldap库非常相似,但它还可以访问特定于Novell eDirectory的属性。

使用Novell.Direcotry.Ldap;就在其中。我还添加了引用并将其指向Novell.Directory.Ldap.dll文件。

代码语言:javascript
复制
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,并且在出现异常时,它甚至已经将主机(字符串)变量设置为LDAPServerIP,将端口(Int)设置为636,就像ldapConn.Connect()命令一样。根据这些信息,我将try/catch放在该语句上以通过它,因为它无论如何都会将属性放入其中。然后它还将在Bind()方法上获得异常,并且bind也将适当的值(userDN和password)放入对象中。

我直接从我使用/编写的另一个程序复制的那段代码,它在这方面工作得很好,所以我不知道为什么它不能在这个程序中工作。唯一的区别是,这是一个不同的项目在Visual Studio中。

考虑到这一点,我再次尝试了一些可能不同的东西,因为这是一个不同的项目:

我已尝试验证项目中是否包含对所提供的Novell的引用。我相当确定这部分肯定是工作的,因为内存中的对象是正确的类型,并且有一堆我的程序没有告诉它的属性,所以它们必须来自那个dll文件。

SSL证书存在于我的计算机上,.net可以找到它,因为这是我开发的程序成功连接到LDAP的同一台计算机。

我错过了什么?看起来它必须是非常简单的东西。

EN

回答 1

Stack Overflow用户

发布于 2013-04-11 03:11:37

我终于找到了。这是一个非常简单的东西,因为它是一个不同的项目,所以必须设置一些东西。我需要添加Mono.Security.dll和对它的引用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15932675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档