-1

次の LDAP 接続文字列があります。connectionString="LDAP://username:password@10.10.10.246:389/DC=ABC,DC=local"

Active Directory サーバーはABC.localIP と一緒10.10.10.246です。

このコードを使用して、Active Directory からプロパティを読み取ります。

MembershipSection membershipSection = (MembershipSection)WebConfigurationManager.GetSection("system.web/membership");
    string defaultProvider = membershipSection.DefaultProvider;
ProviderSettings providerSettings = membershipSection.Providers[defaultProvider];
string connectionStringName = providerSettings.Parameters["connectionStringName"];
string connectionString = WebConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
DirectoryEntry ent = new DirectoryEntry(connectionString);
string name = ent.Properties["l"].Value.ToString();
string Language = ent.Properties["st"].Value.ToString();

しかし、エラーが表示されます"The server is not operational."。私は接続文字列または何が起こっているのかについて何か間違ったことをしていますか? 助けてください。

4

2 に答える 2

0

ServerFault とStackOverFlowのLDAP 接続文字列に関する説明を次に示します。

接続文字列に IP アドレスを使用しないでください。これは悪い習慣です。あなたの場合、私はそれがそのようなものであるべきだと思います: LDAP://ABC.local/DC=ABC,DC=local.

これは、AD 内のオブジェクトを検索する必要があるたびに使用できます:LDAP://OU=Users,DC=ABC,DC=localなど。

認証に関しては、ここに説明があります。

DirectoryEntry dirEntry = new DirectoryEntry(connectionString, username, password);

お役に立てば幸いです。

于 2012-08-16T08:05:08.717 に答える
-1

接続文字列が正しくありません。別の接続文字列を使用して、別の方法で DirectoryEntry エントリを初期化する必要があります。

string connectionString="LDAP://10.10.10.246/DC=ABC,DC=com"; // You can use also simple "LDAP://DC=ABC,DC=com" without IP
DirectoryEntry ent = new DirectoryEntry(connectionString, userName, password);
string name = ent.Properties["name"].Value.ToString(); // Note that property 'l' has friendly name 'City', it's unavailable for domain object!
于 2012-11-02T12:34:53.587 に答える