Esempio n. 1
0
        public static bool GenerateSitemapFile(bool isFull)
        {
            bool flag = true;

            try
            {
                List <SitemapNode>    sitemapNodeList = new List <SitemapNode>();
                IEnumerable <UrlNode> urlNodes        = BaseDataDAL.GetUrls(isFull);
                if (urlNodes != null && urlNodes.Any())
                {
                    foreach (var urlNode in urlNodes)
                    {
                        sitemapNodeList.Add(new SitemapNode()
                        {
                            Url          = urlNode.URL,
                            Frequency    = SitemapFrequency.Weekly,
                            Priority     = 2,
                            LastModified = DateTime.Now
                        });
                    }
                }
                WeeklySitemapJob.Logger.Info("有" + sitemapNodeList.Count() + "个URL需要导入文件");
                int           count    = sitemapNodeList.Count() / 20000;
                List <string> filelist = new List <string>();
                for (int i = 0; i <= count; i++)
                {
                    var          sitemapList   = sitemapNodeList.Skip(i * 20000).Take(20000);
                    string       sitemapstr    = GetSitemapDocument(sitemapList);
                    MemoryStream baoyangstream = GenerateStreamFromString(sitemapstr);
                    string       filename      = string.Format("Sitemap_{0}_{1}.xml", DateTime.Now.ToString("yyyy-MM-dd"), i);
                    using (FileStream filestream = new FileStream(filename, FileMode.Create))
                    {
                        baoyangstream.WriteTo(filestream);
                        filelist.Add(filename);
                    }
                }
                AddFileToZip("sitemap.zip", filelist);
                Attachment fileattachment = new Attachment("sitemap.zip");
                SendMail("SitemapFiles", ConfigurationManager.AppSettings["SEOFileJob:To"], fileattachment);
            }
            catch (Exception ex)
            {
                flag = false;
                WeeklySitemapJob.Logger.Error(ex);
            }
            return(flag);
        }