private static bool TryGetCachedPrincipalData(Guid guid, out ADCachedPrincipal cacheData) { TimeSpan cacheExpiry = ConfigurationHelper.ParseTimeSpanOrDefault( ConfigurationManager.AppSettings["ActiveDirectoryPrincipalCacheExpiry"], s_defaultPrincipalCacheExpiry ); for (int i = s_cachedPrincipals.Count - 1; i >= 0; i--) { ADCachedPrincipal dataSet = s_cachedPrincipals[i]; if (DateTime.UtcNow.Subtract(cacheExpiry) > dataSet.CacheTime) { Log.Verbose("ADCACHE: Cache expired for {Guid}", guid); dataSet.Dispose(); s_cachedPrincipals.RemoveAt(i); continue; } if (dataSet.Principal.Guid == guid) { Log.Verbose("ADCACHE: Cache hit for {Guid}", guid); cacheData = dataSet; return(true); } } Log.Verbose("ADCACHE: Cache miss for {Guid}", guid); cacheData = null; return(false); }
private static bool TryGetCachedPrincipalData(string name, out ADCachedPrincipal cacheData) { bool searchUpn = name.Contains("@"); TimeSpan cacheExpiry = ConfigurationHelper.ParseTimeSpanOrDefault( ConfigurationManager.AppSettings["ActiveDirectoryPrincipalCacheExpiry"], s_defaultPrincipalCacheExpiry ); for (int i = s_cachedPrincipals.Count - 1; i >= 0; i--) { ADCachedPrincipal dataSet = s_cachedPrincipals[i]; if (DateTime.UtcNow.Subtract(cacheExpiry) > dataSet.CacheTime) { Log.Verbose("ADCACHE: Cache expired for {Name}", name); dataSet.Dispose(); s_cachedPrincipals.RemoveAt(i); continue; } if (searchUpn && !string.IsNullOrEmpty(dataSet.Principal.UserPrincipalName)) { if (dataSet.Principal.UserPrincipalName.Equals(name, StringComparison.InvariantCultureIgnoreCase)) { Log.Verbose("ADCACHE: Cache hit for {UPN}", name); cacheData = dataSet; return(true); } } else { if (dataSet.Principal.SamAccountName.Equals(name, StringComparison.InvariantCultureIgnoreCase)) { Log.Verbose("ADCACHE: Cache hit for {SamAccountName}", name); cacheData = dataSet; return(true); } } } Log.Verbose("ADCACHE: Cache miss for {Name}", name); cacheData = null; return(false); }