コード例 #1
0
        /// <inheritdoc/>
        public async Task <SitemapResult> BuildSitemapAsync()
        {
            var baseUrl         = this.httpContextAccessor.HttpContext.GetAbsoluteRoute(string.Empty);
            var sitemapPatterns = await this.sitemapComposition.SetupAsync();

            var result = new SitemapResult();

            foreach (var pattern in sitemapPatterns)
            {
                pattern.SetBaseUrl(baseUrl);
                result.Urls.AddRange(await pattern.BuildPatternUrlsAsync());
            }

            return(result);
        }
コード例 #2
0
        public async Task <SitemapResult> GenerateSitemapAsync()
        {
            var patternsEntities = await this.standardRepository.GetAllAsync <SitemapItemPattern>();

            SitemapResult result = new SitemapResult();

            foreach (var pattern in patternsEntities)
            {
                if ((pattern.DomainOnly && this.baseUrl == pattern.Domain) || !pattern.DomainOnly)
                {
                    string domain = string.IsNullOrEmpty(pattern.Domain) ? this.baseUrl : pattern.Domain;
                    if (!pattern.SinglePage)
                    {
                        var petternUrls = GetUrlsByPattern(pattern.Pattern, pattern.RelatedEntity);
                        foreach (var url in petternUrls)
                        {
                            result.Urls.Add(new Url
                            {
                                Location        = $"{domain}{url}",
                                Priority        = pattern.Priority.ToString(),
                                ChangeFrequency = pattern.ChangeFrequency.ToString()
                            });
                        }
                    }
                    else
                    {
                        result.Urls.Add(new Url
                        {
                            Location        = $"{domain}{pattern.Pattern}",
                            Priority        = pattern.Priority.ToString(),
                            ChangeFrequency = pattern.ChangeFrequency.ToString()
                        });
                    }
                }
            }

            return(result);
        }
コード例 #3
0
ファイル: SEOController.cs プロジェクト: dangminhbk/mvc567
        public async Task <IActionResult> Sitemap()
        {
            SitemapResult sitemapResult = await this.seoService.GenerateSitemapAsync();

            return(Ok(sitemapResult));
        }
コード例 #4
0
ファイル: DefinuxSeoController.cs プロジェクト: Definux/Seo
        public async Task <IActionResult> Sitemap([FromServices] ISitemapBuilder sitemapBuilder)
        {
            SitemapResult sitemapResult = await sitemapBuilder.BuildSitemapAsync();

            return(this.Ok(sitemapResult));
        }
コード例 #5
0
        public async Task <IActionResult> Analyze([FromForm] string url)
        {
            try
            {
                string sitemapUrl = url;

                if (!sitemapUrl.EndsWith("sitemap.xml"))
                {
                    sitemapUrl += "/sitemap.xml";
                }

                DataContext db = new DataContext();

                DbInitializer.Initialize(db);

                SitemapResult sitemapResult = new SitemapResult()
                {
                    Url          = url,
                    AnalysisDate = DateTime.Now
                };

                db.SitemapResults.Add(sitemapResult);

                string sitemapXml;

                sitemapXml = await this.GetSitemap(sitemapUrl);

                XmlDocument sitemap = new XmlDocument();

                sitemap.LoadXml(sitemapXml);

                foreach (XmlNode urlnode in sitemap.DocumentElement.ChildNodes)
                {
                    foreach (XmlNode locnode in urlnode.ChildNodes)
                    {
                        if (locnode.Name != "loc")
                        {
                            continue;
                        }

                        string checkingUrl  = locnode.InnerText.Trim();
                        double responseTime = await this.CheckUrlAsync(checkingUrl);

                        SitemapItemResult itemResult = new SitemapItemResult()
                        {
                            ItemUrl         = checkingUrl,
                            RespponseTimeMS = responseTime,
                            SitemapResult   = sitemapResult
                        };

                        db.SitemapItemResults.Add(itemResult);
                    }
                }

                await db.SaveChangesAsync();
            }
            catch (Exception exception)
            {
                ViewBag.Exception = exception;

                return(View("AnalizeError"));
            }

            return(View());
        }