Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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);
            }
        }
Esempio n. 4
0
        private static void LoadSiteRouteInfo(object state)
        {
            SiteRouteInfo siteRouteInfo = state as SiteRouteInfo;

            siteRouteInfo.LoadConfigration();
        }