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); }
public static WebAssemblyHostBuilder AddBlazorCookieAuth(this WebAssemblyHostBuilder builder) { var baseAddress = builder.HostEnvironment.BaseAddress; var uri = new Uri(baseAddress); baseAddress = $"{uri.Scheme}://{uri.Authority}"; HostAccessor hostAccessor = new HostAccessor { HostEnvironment = builder.HostEnvironment, BaseAddress = new Uri(baseAddress) }; builder.Services.AddSingleton <IHostAccessor>(hostAccessor); builder.Services.AddTransient <AccountHelper>(); builder.Services.AddTransient <HostAuthorizedHandler>(); builder.Services.AddTransient <ExternalWatcherDelegatingHandler>(); builder.Services.AddHttpClient(Constants.HostingHttpClientName, client => { client.BaseAddress = new Uri(baseAddress); }).AddHttpMessageHandler <HostAuthorizedHandler>(); builder.Services.AddTransient <HttpClient>(sp => { var authorizedHandler = sp.GetRequiredService <HostAuthorizedHandler>(); return(new HttpClient(authorizedHandler) { BaseAddress = new Uri(baseAddress) }); }); builder.Services.AddSingleton <IHostHttpClient, HostHttpClient>(); builder.Services.AddSingleton <IAuthStatusService, AuthStatusService>(); return(builder); }
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); }