Генерация карты сайта на лету

голоса
4

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

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

  1. chinookwebs
  2. cervoproject
  3. newtonking

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

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

Задан 13/08/2008 в 01:01
источник пользователем
На других языках...                            


3 ответов

голоса
7

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

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

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

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

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();
}

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

Ответил 13/08/2008 в 08:19
источник пользователем

голоса
0

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

Ответил 13/08/2008 в 02:12
источник пользователем

голоса
0

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

Ответил 13/08/2008 в 01:48
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more