public static List <DDOSRedirectorSetting> GetAll() { SiteAccessor ua = DataAccessor.CreateInstance <SiteAccessor>(); List <DDOSRedirectorSetting> lstDomain = new List <DDOSRedirectorSetting>(); Dictionary <int, string> dicDomain = ua.GetActiveDomains(); List <int> lstSelectedDomain = HttpRuntime.Cache[_CacheKey] as List <int>; if (lstSelectedDomain == null) { lstSelectedDomain = PopulateData(); } foreach (int k in dicDomain.Keys) { if (string.Compare("System", dicDomain[k], true) == 0) { continue; } bool flag = false; if (lstSelectedDomain != null && lstSelectedDomain.Contains <int>(k)) { flag = true; } lstDomain.Add(new DDOSRedirectorSetting() { DomainName = dicDomain[k], DomainID = k, Flag = flag }); } return(lstDomain.OrderBy(d => d.DomainName).ToList()); }
public static List <SiteAndHost> GetAll(Service service) { string cacheKey = string.Format("sites.all.{0}", service.Name); var siteAndHosts = (List <SiteAndHost>)MemoryCache.Default[cacheKey]; if (siteAndHosts != null) { return(siteAndHosts); } var cmSites = SiteAccessor.GetAll(service); var cmHosts = HostAccessor.GetAll(service); siteAndHosts = cmSites.Select(cmSite => new SiteAndHost() { SiteID = cmSite.SiteID, DomainID = cmSite.DomainID, DisplayName = cmSite.DisplayName, HostNames = cmHosts.Where(h => h.SiteID == cmSite.SiteID).Select(h => h.HostName).ToList() }).ToList(); siteAndHosts = siteAndHosts.Where(sh => sh.HostNames.Any()).OrderBy(sh => sh.DomainID).ToList(); MemoryCache.Default.Add(new CacheItem(cacheKey, siteAndHosts), new CacheItemPolicy() { AbsoluteExpiration = DateTime.Now.AddHours(1) }); return(siteAndHosts); }
private static bool InternalReloadSiteHostCache() { bool success = false; if (Monitor.TryEnter(s_UpdateSiteHostCacheLock)) { try { SiteAccessor da = DataAccessor.CreateInstance <SiteAccessor>(); string filePath = HostingEnvironment.MapPath(ALL_SITES_CACHE_FILE); List <cmSite> sites = da.GetAll(); if (sites.Count > 0) { ObjectHelper.BinarySerialize <List <cmSite> >(sites, filePath); HttpRuntime.Cache.Insert(ALL_SITES_CACHE_FILE , sites , new CacheDependency(filePath) , Cache.NoAbsoluteExpiration , Cache.NoSlidingExpiration , CacheItemPriority.NotRemovable , null ); } HostAccessor ha = DataAccessor.CreateInstance <HostAccessor>(); filePath = HostingEnvironment.MapPath(ALL_HOSTS_CACHE_FILE); List <cmHost> hosts = ha.GetAll(); if (!string.IsNullOrWhiteSpace(ConfigurationManager.AppSettings["Init.Debug.Sites"])) { //only loads the sites specificed from web.config & template sites, to speed the loading for debug hosts = hosts.Where(h => GetRootTemplateSites().Exists(s => s.ID == h.SiteID) || GetDebugSites().Contains(h.SiteID)).ToList(); } if (hosts.Count > 0) { ObjectHelper.BinarySerialize <List <cmHost> >(hosts, filePath); HttpRuntime.Cache.Insert(ALL_HOSTS_CACHE_FILE , hosts , new CacheDependency(filePath) , Cache.NoAbsoluteExpiration , Cache.NoSlidingExpiration , CacheItemPriority.NotRemovable , null ); } Dictionary <string, SiteAndHost> dictionary = new Dictionary <string, SiteAndHost>(StringComparer.InvariantCultureIgnoreCase); foreach (cmHost host in hosts) { cmSite site = sites.FirstOrDefault(s => s.ID == host.SiteID); if (site != null) { dictionary[host.HostName] = new SiteAndHost() { Site = site, Host = host, }; } } if (dictionary.Count > 0) { filePath = HostingEnvironment.MapPath(HOST_SITE_MAP_CACHE_FILE); ObjectHelper.BinarySerialize <Dictionary <string, SiteAndHost> >(dictionary, filePath); HttpRuntime.Cache.Insert(HOST_SITE_MAP_CACHE_FILE , dictionary , new CacheDependency(filePath) , Cache.NoAbsoluteExpiration , Cache.NoSlidingExpiration , CacheItemPriority.NotRemovable , null ); } success = true; } catch (Exception ex) { Logger.Exception(ex); } finally { Monitor.Exit(s_UpdateSiteHostCacheLock); } } return(success); }