尝试通过 Ldap 连接到 AD
Try connect to AD via Ldap
我想实现一个通过Ldap连接AD的功能
我的代码:
public bool TryConnect(string server, string userName, string password)
{
try
{
var credentials = new NetworkCredential(@"test\administrator123", @"P2ssw0rd");
var ldapidentifier = new LdapDirectoryIdentifier("Test");
using (var ldapconn = new LdapConnection(ldapidentifier, credentials))
{
ldapconn.AuthType = AuthType.Basic;
var request = new SearchRequest("dc=test, dc=local", "(objectClass=user)", System.DirectoryServices.Protocols.SearchScope.Subtree, null);
var response = (SearchResponse)ldapconn.SendRequest(request);
}
}
catch (Exception)
{
return false;
}
return true;
}
这是有效的,但我不喜欢它!
在没有 try/catch 且没有一些虚拟搜索请求的情况下,是否有一些更简洁的方法来测试连接?
您可以调用 Bind() 方法来测试基本连接,而不是执行搜索,如下所示:
ldapconn.Bind();
但是我不知道没有 try/catch 的测试方法。
我想实现一个通过Ldap连接AD的功能
我的代码:
public bool TryConnect(string server, string userName, string password)
{
try
{
var credentials = new NetworkCredential(@"test\administrator123", @"P2ssw0rd");
var ldapidentifier = new LdapDirectoryIdentifier("Test");
using (var ldapconn = new LdapConnection(ldapidentifier, credentials))
{
ldapconn.AuthType = AuthType.Basic;
var request = new SearchRequest("dc=test, dc=local", "(objectClass=user)", System.DirectoryServices.Protocols.SearchScope.Subtree, null);
var response = (SearchResponse)ldapconn.SendRequest(request);
}
}
catch (Exception)
{
return false;
}
return true;
}
这是有效的,但我不喜欢它!
在没有 try/catch 且没有一些虚拟搜索请求的情况下,是否有一些更简洁的方法来测试连接?
您可以调用 Bind() 方法来测试基本连接,而不是执行搜索,如下所示:
ldapconn.Bind();
但是我不知道没有 try/catch 的测试方法。