Pregunta

Estoy tratando de generar un sitemap.xml sobre la marcha para un particular asp.net sitio web.

He encontrado un par de soluciones:

  1. chinookwebs
  2. cervoproject
  3. newtonking

Chinookwebs está funcionando muy bien, pero parece un poco inactivo y ahora es imposible para personalizar la "prioridad" y el "changefreq" etiquetas de cada página, todos ellos heredan el mismo valor desde el archivo de configuración.

¿Qué soluciones soléis usar?

¿Fue útil?

Solución

Generalmente se utiliza un Controlador HTTP para esto.Teniendo en cuenta la petición de...

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

...el controlador responderá con un formato XML sitemap.Ya sea que sitemap se genera sobre la marcha, a partir de una base de datos, o algún otro método depende de la implementación de controladores HTTP.

Aquí es aproximadamente lo que se vería como:

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

Este código puede ser mejorado, pero esa es la idea básica.

Otros consejos

Controlador personalizado para generar el sitemap.

El uso de ASP.NET MVC sólo batida rápidamente un poco de código a través de el .NET XML generación de la biblioteca y, a continuación, acaba de pasar que a una página de vista de que había un control XML en él.En el code-behind me até el control con el ViewData.Esto se parece a reemplazar el comportamiento predeterminado de la vista de las páginas para presentar un encabezado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top