以下是我尝试运行的代码:
public static string getEmail (string id)
{
string ldapPath = "LDAP://aa.bb.net";
string ldapUser = "OU=someGroup, DC=aa,DC=bb,DC=net";
string ldapPassword = "xxxx";
DirectoryEntry dEntry = new DirectoryEntry(ldapPath, ldapUser, ldapPassword);
DirectorySearcher dSearch = new DirectorySearcher(dEntry);
dSearch.Filter = "(&(|(sAMAccount=" + id + ")(cn=" + id + "))(|(ObjectCategory=user)(ObjectCategory=person)))";
dSearch.PropertiesToLoad.Add("mail");
SearchResult result = dSearch.FindOne();
if (result != null)
{
string email = result.Properties["mail"].ToString();
return email;
}
else return null;
}
我想使用他们的ID号搜索用户并检索他们的电子邮件(在这种情况下是' mail'属性)。我知道这是不好的做法,因为密码不应该在代码中,但是现在我只想尝试检索他们的电子邮件,看它是否有效。
每次运行时,我都会收到标题中提到的相同错误。我尝试配置IIS,我将Process Model Identity设置为Network Service,并将web.config配置为:
<identity impersonate="true" />
&#13;
这是堆栈跟踪: enter image description here
有什么建议吗?
答案 0 :(得分:1)
The server is not operational
表示无法向域控制器打开网络连接。
您可以使用telnet命令行客户端检查连接,如下所示:
telnet aa.bb.net 389
空白屏幕表示它有效。如果没有,它会给你一个错误。
端口389是默认的LDAP端口。但还有其他选择:
如果389不起作用,那么检查它们并查看哪些工作(如果有的话)。
但我也看到你的代码存在其他问题。例如,这一行:
string ldapUser = "OU=someGroup, DC=aa,DC=bb,DC=net";
用户应指明用户,但这仅表示OU。此外,还有一个空间。也许这只是一个糟糕的复制/粘贴,但我想我会指出它。
您还可以在路径中指明域的distinguishedName
。如果域的DNS名称足够,我不记得了。
string ldapPath = "LDAP://aa.bb.net/DC=aa,DC=bb,DC=net";