예제 #1
0
        private static ECMSSettings LoadAppSettings(DirectoryInfo dirInfo_)
        {
            ECMSSettings setting = new ECMSSettings();

            try
            {
                using (DataSet ds = new DataSet("Configuration"))
                {
                    ds.ReadXml(dirInfo_.FullName + "\\site.config");
                    setting.CDNPath                    = Convert.ToString(ds.Tables["configuration"].Rows[0]["CDNPath"]) + dirInfo_.Name;
                    setting.AppBasePath                = AppDomain.CurrentDomain.BaseDirectory;
                    setting.HostAliases                = Convert.ToString(ds.Tables["configuration"].Rows[0]["HttpAliases"]);
                    setting.PortalHostName             = Convert.ToString(ds.Tables["configuration"].Rows[0]["PortalHostName"]);
                    setting.XmlSitemapRefreshFrequency = Convert.ToInt32(ds.Tables["configuration"].Rows[0]["XmlSitemapRefreshFrequency"]);
                    setting.SiteId = Convert.ToInt32(dirInfo_.Name);
                    setting.InitiateXMLSiteMapGenerator();
                    setting.LoadDomainData();
                }
            }
            catch (Exception ex)
            {
                LogEventInfo info = new LogEventInfo(LogLevel.Error, ECMSSettings.DEFAULT_LOGGER, string.Format("Error while reading config file at : {0}", dirInfo_.FullName) + "\r\n" + ex.ToString());
                DependencyManager.Logger.Log(info);
            }
            return(setting);
        }
예제 #2
0
        /// <summary>
        /// Thsi method will write xmlsitemap as per standards define here : http://sitemaps.org/protocol.php
        /// </summary>
        /// <param name="websiteRoot_"></param>
        /// <param name="filePath_"></param>
        public void GenerateSitemapXml(object stateInfo_)
        {
            ECMSSettings settings = stateInfo_ as ECMSSettings;

            try
            {
                XNamespace xsi            = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
                XNamespace xmlns          = "http://www.sitemaps.org/schemas/sitemap/0.9";
                XNamespace schemaLocation = XNamespace.Get("http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd");

                XElement root = new XElement(xmlns + "urlset",
                                             new XAttribute(XNamespace.Xmlns + "xsi", xsi),
                                             new XAttribute(xsi + "schemaLocation", schemaLocation));

                var siteMapIndexRoot = new XElement(xmlns + "sitemapindex",
                                                    new XAttribute(XNamespace.Xmlns + "xsi", xsi),
                                                    new XAttribute(xsi + "schemaLocation", schemaLocation));

                var validUrls  = DependencyManager.URLRepository.GetAll(settings.SiteId, false);
                int urlCounter = 1;
                foreach (var validUrl in validUrls)
                {
                    root.Add(
                        new XElement(xmlns + "url",
                                     new XElement(xmlns + "loc", new XCData(settings.PortalHostName + validUrl.FriendlyUrl.Trim().ToLower().Replace(' ', '-'))),
                                     new XElement(xmlns + "changefreq", validUrl.ChangeFrequency),
                                     new XElement(xmlns + "priority", validUrl.SitemapPriority),
                                     new XElement(xmlns + "lastmod", validUrl.LastModified.ToString("yyyy-MM-dd"))
                                     ));

                    urlCounter++;
                    if (urlCounter % 45000 == 0)
                    {
                        WriteSitemapFile(AppBasePath + "\\" + settings.SiteId + "\\sitemap" + (urlCounter / 45000) + ".xml.gz", root.ToString(), true);
                        CreateSitemapIndexDoc(siteMapIndexRoot, "/xmlsitemap/" + (urlCounter / 45000));

                        root = new XElement(xmlns + "urlset",
                                            new XAttribute(XNamespace.Xmlns + "xsi", xsi),
                                            new XAttribute(xsi + "schemaLocation", schemaLocation));
                    }
                }

                if (urlCounter > 0)
                {
                    CreateSitemapIndexDoc(siteMapIndexRoot, "http://" + settings.PortalHostName + "/xmlsitemap/" + (urlCounter / 45000));
                    WriteSitemapFile(AppBasePath + "\\static\\" + settings.SiteId + "\\sitemap-" + (urlCounter / 45000) + ".xml.gz", root.ToString(), true);
                    WriteSitemapFile(AppBasePath + "\\static\\" + settings.SiteId + "\\sitemapindex.xml", siteMapIndexRoot.ToString(), false);
                }
            }
            catch (Exception ex)
            {
                LogEventInfo info = new LogEventInfo(LogLevel.Error, ECMSSettings.DEFAULT_LOGGER, ex.ToString());
                DependencyManager.Logger.Log(info);
            }
        }
예제 #3
0
 private static ECMSSettings LoadAppSettings(DirectoryInfo dirInfo_)
 {
     ECMSSettings setting = new ECMSSettings();
     try
     {
         using (DataSet ds = new DataSet("Configuration"))
         {
             ds.ReadXml(dirInfo_.FullName + "\\site.config");
             setting.CDNPath = Convert.ToString(ds.Tables["configuration"].Rows[0]["CDNPath"]) + dirInfo_.Name;
             setting.AppBasePath = AppDomain.CurrentDomain.BaseDirectory;
             setting.HostAliases = Convert.ToString(ds.Tables["configuration"].Rows[0]["HttpAliases"]);
             setting.PortalHostName = Convert.ToString(ds.Tables["configuration"].Rows[0]["PortalHostName"]);
             setting.XmlSitemapRefreshFrequency = Convert.ToInt32(ds.Tables["configuration"].Rows[0]["XmlSitemapRefreshFrequency"]);
             setting.SiteId = Convert.ToInt32(dirInfo_.Name);
             setting.InitiateXMLSiteMapGenerator();
             setting.LoadDomainData();
         }
     }
     catch (Exception ex)
     {
         LogEventInfo info = new LogEventInfo(LogLevel.Error, ECMSSettings.DEFAULT_LOGGER, string.Format("Error while reading config file at : {0}", dirInfo_.FullName) + "\r\n" + ex.ToString());
         DependencyManager.Logger.Log(info);
     }
     return setting;
 }