-1

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

活动目录服务器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."。我是在用连接字符串做任何事情还是正在发生什么。你帮帮我好吗?

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 回答