LDAP连接字符串

时间:2012-08-15 08:36:21

标签: active-directory ldap

我有这个LDAP连接字符串:connectionString="LDAP://username:password@10.10.10.246:389/DC=ABC,DC=local"

Active Directory服务器为ABC.local,IP 10.10.10.246

我正在使用此代码从活动目录中读取属性:

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."。我是否正在使用连接字符串或正在发生的事情。你能帮帮我吗?

2 个答案:

答案 0 :(得分:0)

以下是有关ServerFault LDAP connection stringStackOverFlow

an explanation here的说明

你不应该在连接字符串中使用IP地址,这是一个坏习惯。 在你的情况下,我认为应该是这样的:LDAP://ABC.local/DC=ABC,DC=local

每次需要搜索AD中的对象时都可以使用此功能:LDAP://OU=Users,DC=ABC,DC=local等等。

关于身份验证,有{{3}},它可以为您提供:

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

我希望有所帮助。

答案 1 :(得分:-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!