Создать карту сайта на лету

Я пытаюсь создать файл sitemap.xml на лету для определенного веб-сайта asp.net.

Я нашел пару решений:

  1. chinookwebs
  2. cervoproject
  3. newtonking

Chinookwebs работает отлично, но сейчас кажется немного неактивным, и невозможно персонализировать теги «priority» и «changefreq» на каждой странице, все они наследуют одно и то же значение из файла конфигурации.

Какие решения вы, ребята, используете?

13.08.2008 00:01:11
Вот еще одна статья, в которой представлен код для достижения этой цели
Jonathan Wood 8.01.2011 02:22:12
3 ОТВЕТА
РЕШЕНИЕ

Обычно для этого вы используете HTTP-обработчик . Учитывая запрос на ...

http://www.yoursite.com/sitemap.axd

... ваш обработчик ответит отформатированной картой сайта XML. Будет ли эта карта сайта сгенерирована на лету, из базы данных или каким-либо другим методом, зависит от реализации HTTP-обработчика.

Вот примерно так это будет выглядеть:

void IHttpHandler.ProcessRequest(HttpContext context)
{
    //
    // Important to return qualified XML (text/xml) for sitemaps
    //
    context.Response.ClearHeaders();
    context.Response.ClearContent();
    context.Response.ContentType = "text/xml";
    //
    // Create an XML writer
    //
    XmlTextWriter writer = new XmlTextWriter(context.Response.Output);
    writer.WriteStartDocument();
    writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
    //
    // Now add entries for individual pages..
    //
    writer.WriteStartElement("url");
    writer.WriteElementString("loc", "http://www.codingthewheel.com");
    // use W3 date format..
    writer.WriteElementString("lastmod", postDate.ToString("yyyy-MM-dd"));
    writer.WriteElementString("changefreq", "daily");
    writer.WriteElementString("priority", "1.0");
    writer.WriteEndElement();
    //
    // Close everything out and go home.
    //
    result.WriteEndElement();
    result.WriteEndDocument();
    writer.Flush();
}

Этот код можно улучшить, но это основная идея.

7
13.08.2008 07:22:27

Пользовательский обработчик для создания карты сайта.

0
13.08.2008 00:48:30
Обработчик позаботится о каждом http-запросе к приложению и сгенерирует на лету файл sitemap.xml, это то, что вы имеете в виду?
jdecuyper 13.08.2008 03:52:46

Используя ASP.NET MVC, вы быстро собрали небольшой фрагмент кода, используя библиотеку генерации XML .NET, а затем просто передали его на страницу просмотра, на которой был элемент управления XML. В коде позади я связал элемент управления с ViewData. Это, казалось, переопределяло поведение страниц просмотра по умолчанию для представления другого заголовка.

0
13.08.2008 01:12:17