缓存 LDAP 连接

本文关键字:连接 LDAP 缓存 | 更新日期: 2023-09-27 18:35:57

我正在开发一个内部门户,允许用户向我们管理的其他各种域请求帐户。

必须通过LDAP检查某个帐户是否已存在,因此这就是我建立连接的方法。

const string server = "ldap.mydomain.net:636";
using (var ldapSSLConn = new LdapConnection(server))
{
    var networkCredential = new NetworkCredential("user", "supersecurepassword");
                        ldapSSLConn.SessionOptions.SecureSocketLayer = true;
                        ldapSSLConn.AuthType = AuthType.Basic;
                        ldapSSLConn.SessionOptions.SecureSocketLayer = true;
                        ldapSSLConn.SessionOptions.VerifyServerCertificate = new VerifyServerCertificateCallback((con, cer) => true);
                        ldapSSLConn.Bind(networkCredential);
   // Search happens here
   // Return results
}

然后,我可以使用ldapSSLConn搜索现有帐户。

每次我需要建立连接时,都需要 +/- 20 秒,搜索本身需要 85 毫秒。

有没有办法缓存连接?例如在Application_Start()上打开它,然后在我需要时引用它?

缓存 LDAP 连接

我找到了一个适合我的解决方案。

我正在检查连接现在是否缓存;

if (System.Web.HttpContext.Current.Cache["LDAPConnection"] == null)

如果不是,我建立一个连接(见问题),最后缓存它:

System.Web.HttpContext.Current.Cache.Add("LDAPConnection", ldapSSLConn, null, DateTime.Now.AddHours(8), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, null);