/// <summary> /// Extension method, reload configuration for special /// </summary> /// <param name="site">site</param> /// <returns>SiteRouteInfo of this site</returns> public static SiteRouteInfo ReloadConfigration(this cmSite site) { // initialize DomainRouteInfo SiteRouteInfo siteRouteInfo = null; if (!s_DistinctName2DomainRouteInfo.TryGetValue(site.DistinctName, out siteRouteInfo)) { siteRouteInfo = new SiteRouteInfo(site); s_DistinctName2DomainRouteInfo[site.DistinctName] = siteRouteInfo; } siteRouteInfo.LoadConfigration(); return(siteRouteInfo); }
/// <summary> /// Extension method, returns controller type for special route /// </summary> /// <param name="domain">site</param> /// <param name="routeBase">route</param> /// <returns>controller type</returns> public static Type GetControllerTypeByRoute(this cmSite domain, RouteBase routeBase) { SiteRouteInfo domainRouteInfo = null; if (s_DistinctName2DomainRouteInfo.TryGetValue(domain.DistinctName, out domainRouteInfo)) { Route route = routeBase as Route; if (route != null) { SiteRouteInfo.RouteExtraInfo routeExtraInfo = null; if (domainRouteInfo.RouteExtraInfos.TryGetValue(route.DataTokens["RouteName"] as string, out routeExtraInfo)) { return(routeExtraInfo.ControllerType); } } } return(null); }
/// <summary> /// This method is called when the app pool starts /// </summary> public static void InitialLoadConfiguration() { InternalReloadSiteHostCache(); List <cmSite> sites = null; SiteRouteInfo siteRouteInfo = null; bool preloadRoot = ConfigurationManager.AppSettings["Init.PreloadRootTemplateSiteRouteInfo"].DefaultIfNullOrWhiteSpace("false").Equals("true", StringComparison.InvariantCultureIgnoreCase); if (preloadRoot) { // Load Root Template Sites' RouteInfo sites = GetRootTemplateSites(); { foreach (cmSite site in sites) { siteRouteInfo = new SiteRouteInfo(site); LoadSiteRouteInfo(siteRouteInfo); } } sites = GetSites().Where(s => !sites.Exists(rs => rs.ID == s.ID)).ToList(); } else { sites = GetSites(); } if (!string.IsNullOrWhiteSpace(ConfigurationManager.AppSettings["Init.Debug.Sites"])) { //only loads the sites specificed from web.config & template sites, to speed the loading for debug sites = GetSites().Where(s => GetRootTemplateSites().Exists(ts => ts.ID == s.ID) || GetDebugSites().Contains(s.ID)).ToList(); } foreach (cmSite site in sites) { siteRouteInfo = new SiteRouteInfo(site); s_DistinctName2DomainRouteInfo[site.DistinctName] = siteRouteInfo; BackgroundThreadPool.QueueUserWorkItem("InitialLoadConfiguration", new WaitCallback(LoadSiteRouteInfo), siteRouteInfo, true); } }
private static void LoadSiteRouteInfo(object state) { SiteRouteInfo siteRouteInfo = state as SiteRouteInfo; siteRouteInfo.LoadConfigration(); }