SenseNet.Portal.Virtualization.PortalContext.ReloadSiteList C# (CSharp) Méthode

ReloadSiteList() private static méthode

private static ReloadSiteList ( ) : void
Résultat void
        private static void ReloadSiteList()
        {
            lock (_sitesLock)
            {
                NodeQueryResult result = null;

                try
                {
                    if (ContentRepository.Schema.ContentType.GetByName("Site") == null)
                        throw new ApplicationException("Unknown ContentType: Site");

                    //CONDITIONAL EXECUTE
                    using (new SystemAccount())
                    {
                        if (StorageContext.Search.IsOuterEngineEnabled && StorageContext.Search.SearchEngine != InternalSearchEngine.Instance)
                        {
                            var query = new NodeQuery();
                            var nt = ActiveSchema.NodeTypes[typeof(Site).Name];
                            query.Add(new TypeExpression(nt, false));
                            result = query.Execute();//.Nodes.ToList<Node>();
                        }
                        else
                        {
                            result = NodeQuery.QueryNodesByType(ActiveSchema.NodeTypes[typeof(Site).Name], false);//.Nodes.ToList<Node>();
                        }
                    }

                    _urlPaths = new NameValueCollection(result.Count);
                    _startPages = new NameValueCollection(result.Count);
                    _authTypes = new NameValueCollection(result.Count);
                    _loginPages = new NameValueCollection(result.Count);
                }
                catch (Exception e) //logged
                {
                    Logger.WriteException(e);
                }

                _sites = new Dictionary<string, Site>();

                // urlsettings come from webconfig
                var configSites = Configuration.UrlListSection.Current.Sites;

                // urlsettings come either from sites in content repository or from webconfig
                if (result != null)
                {
                    //Loading sites and start pages should be done with and admin account.
                    //Authorization will occur when the user tries to load 
                    //the start page of the selected site.

                    using (new SystemAccount())
                    {
                        foreach (Site site in result.Nodes)
                        {
                            var siteUrls = site.UrlList.Keys;

                            // siteurls come from webconfig
                            if (configSites.Count > 0 && configSites[site.Path] != null)
                                siteUrls = configSites[site.Path].Urls.GetUrlHosts();

                            foreach (string siteUrl in siteUrls)
                            {
                                try
                                {
                                    _sites.Add(siteUrl, site);
                                }
                                catch (ArgumentException) //rethrow
                                {
                                    throw new ArgumentException(String.Format("The url '{0}' has already been added to site '{1}' and cannot be added to site '{2}'", siteUrl, _sites[siteUrl].Name, site.Name));
                                }
                            }

                            string siteLoginPageUrl = (site.LoginPage != null ? site.LoginPage.Path : null);
                            foreach (string url in siteUrls)
                            {
                                _urlPaths.Add(url, site.Path);
                                _loginPages.Add(url, siteLoginPageUrl);
                                _startPages.Add(url, site.StartPage != null ? site.StartPage.Name : string.Empty);

                                // auth types come from webconfig or from site urllist
                                if (configSites.Count > 0 && configSites[site.Path] != null)
                                    _authTypes.Add(url, configSites[site.Path].Urls[url].Auth);
                                else
                                    _authTypes.Add(url, site.UrlList[url]);
                            }
                        }
                    }
                }
            }
        }