Как динамически создать sitemap.xml в .net core 2? - PullRequest
0 голосов
/ 13 мая 2018

Может кто-нибудь сказать мне, как создать карту сайта в .net core 2? эта статья / альтернативная ссылка не работает в ядре 2.

Ответы [ 4 ]

0 голосов
/ 23 января 2019

Я нашел решение вашего вопроса из примера веб-приложения, через которое я работал.Кредит идет на Мадс Кристенсен .Это очень упрощенная версия того, что вы ищете.Поместите этот код в класс контроллера, такой как HomeController, так же, как вы добавили бы метод действия.

Вот метод, который возвращает XML:

[Route("/sitemap.xml")]
public void SitemapXml()
{
     string host = Request.Scheme + "://" + Request.Host;

     Response.ContentType = "application/xml";

     using (var xml = XmlWriter.Create(Response.Body, new XmlWriterSettings { Indent = true }))
     {
          xml.WriteStartDocument();
          xml.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");

          xml.WriteStartElement("url");
          xml.WriteElementString("loc", host);
          xml.WriteEndElement();

          xml.WriteEndElement();
     }
}

Это приведет к следующему, когдаВы вводите http://www.example.com/sitemap.xml:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
     <url>
          <loc>http://www.example.com/</loc>
     </url>
</urlset>

Надеюсь, это поможет?Если вы также нашли что-то, опубликуйте свое решение как обновление вашего вопроса.

0 голосов
/ 17 сентября 2018

К счастью, уже есть список готовых библиотек.Установите этот инструмент https://github.com/uhaciogullari/SimpleMvcSitemap

Затем создайте новый контроллер следующим образом (есть еще примеры на github):

public class SitemapController : Controller
{
    public ActionResult Index()
    {
        List<SitemapNode> nodes = new List<SitemapNode>
        {
            new SitemapNode(Url.Action("Index","Home")),
            new SitemapNode(Url.Action("About","Home")),
            //other nodes
        };

        return new SitemapProvider().CreateSitemap(new SitemapModel(nodes));
    }
}
0 голосов
/ 04 декабря 2018
  1. Как: динамически создать файл sitemap.xml в ядре ASP.net 2.2 Razor Pages
  2. Концепция: Использование IPageRouteModelConvention
  3. Nuget: ПакетURL
  4. Исходный код: URL Github
0 голосов
/ 13 мая 2018

Промежуточное программное обеспечение работает нормально, но требуется незначительное исправление.

if (context.Request.Path.Value.Equals("/sitemap.xml", StringComparison.OrdinalIgnoreCase))
{
    // Implementation
}
else
    await _next(context);

Я создал новый проект, затем, после добавления промежуточного программного обеспечения и запуска, я ввел http://localhost:64522/sitemap.xml в браузер, я получилследующий результат:

<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>http://localhost:64522/home/index</loc>
    <lastmod>2018-05-13</lastmod>
  </url>
  <url>
    <loc>http://localhost:64522/home/about</loc>
    <lastmod>2018-05-13</lastmod>
  </url>
  <url>
    <loc>http://localhost:64522/home/contact</loc>
    <lastmod>2018-05-13</lastmod>
  </url>
  <url>
    <loc>http://localhost:64522/home/privacy</loc>
    <lastmod>2018-05-13</lastmod>
  </url>
  <url>
    <loc>http://localhost:64522/home/error</loc>
    <lastmod>2018-05-13</lastmod>
  </url>
</urlset>
...