2

同様の質問が何百万回も尋ねられていることを私は知っています。私はそれらを読みましたが、まだこの問題の根底にたどり着くことができません。コード (Winforms、c#) で Novell.Directory.Ldap 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) が ldapConn.Connect( ) 順序付けられました。この情報を考慮して、とにかく属性を入れているので、それを乗り越えるためにそのステートメントだけにtry/catchを入れました。次に、Bind() メソッドでも例外が発生し、bind は適切な値 (userDN とパスワード) もオブジェクトに入れました。

私が使用/作成した別のプログラムから直接コピーしたコードのそのセクションは、その中で完全に正常に機能するため、このプログラムで機能しない理由がわかりません。唯一の違いは、これが Visual Studio の別のプロジェクトであることです。

それを踏まえて、別のプロジェクトであるため、異なる可能性があることをもう一度試してみました。

提供された Novell への参照がプロジェクトに含まれていることを確認してみました。メモリ内のオブジェクトは正しいタイプであり、プログラムが通知しない属性がたくさんあるため、その部分が機能している必要があると確信しているため、それらはそのdllファイルから取得する必要がありました。

SSL証明書は、LDAPに正常に接続するプログラムを開発したのと同じコンピューターであるため、.netがそれを見つけることができる場所に私のコンピューターに存在します。

私は何が欠けていますか?本当にシンプルなものでなければならないようです。

4

1 に答える 1

2

やっと見つけました。それは本当に単純なもので、別のプロジェクトであるために設定する必要がありました。Mono.Security.dll とその参照を追加する必要がありました。

于 2013-04-10T19:11:36.533 に答える