2013-04-10 68 views
2

我知道類似的問題已經被問了一百萬次。我讀過它們,但我仍然無法深究。我在我的代碼中使用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的程序相同的計算機。

我在誤解什麼?看來它必須是非常簡單的東西。

+0

可能重複[什麼是NullReferenceException,我該如何解決它?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-doi-i-fix-它) – Nasreddine 2015-10-04 09:07:46

回答

2

我終於找到了。這是一件非常簡單的事情,並且由於是一個不同的項目而必須設置一些東西。我需要添加Mono.Security.dll及其參考。