src/ZKEACMS.Sitemap/Service/SitemapService.cs
(完整代码) 2KB/* http://www.zkea.net/
* Copyright (c) ZKEASOFT. All rights reserved.
* http://www.zkea.net/licenses */
using Microsoft.AspNetCore.Http;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using ZKEACMS.Article.Models;
using ZKEACMS.Article.Service;
using ZKEACMS.Page;
using ZKEACMS.Product.Service;
namespace ZKEACMS.Sitemap.Service
{
public class SitemapService : ISitemapService
{
private readonly IEnumerable<ISiteUrlProvider> _siteUrlProviders;
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IHostOptionProvider _hostOptionProvider;
private readonly IBlockUrlService _blockUrlService;
public SitemapService(IEnumerable<ISiteUrlProvider> siteUrlProviders,
IHttpContextAccessor httpContextAccessor,
IHostOptionProvider hostOptionProvider,
IBlockUrlService blockUrlService)
{
_siteUrlProviders = siteUrlProviders;
_httpContextAccessor = httpContextAccessor;
_hostOptionProvider = hostOptionProvider;
_blockUrlService = blockUrlService;
}
public string Get()
{
var host = _hostOptionProvider.GetOrigin();
HashSet<string> blockedUrls = _blockUrlService.GetAll();
StringBuilder xmlBuilder = new StringBuilder();
xmlBuilder.AppendLine("<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd\">");
foreach (var provider in _siteUrlProviders)
{
foreach (var item in provider.Get())
{
if (blockedUrls.Contains(item.Url)) continue;
xmlBuilder.AppendFormat("<url><loc>{0}</loc><lastmod>{1}</lastmod><changefreq>{2}</changefreq><priority>{3}</priority></url>",
host + item.Url, item.ModifyDate.ToString("s"), item.Changefreq, item.Priority);
}
}
xmlBuilder.AppendLine("</urlset>");
return xmlBuilder.ToString();
}
}
}
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。