Estoy intentando crear un mapa de sitio automático ActionResult que genera un archivo sitemap.xml válido. La generación real del archivo no es un problema, pero parece que no puedo averiguar cómo completar la lista de URL en el sistema. Aquí está el código que tengo hasta ahora:Mapa del sitio dinámico en ASP.NET MVC
public ContentResult Sitemap()
{
XNamespace xmlns = "http://www.sitemaps.org/schemas/sitemap/0.9";
XElement root = new XElement(xmlns + "urlset");
//some kind of foreach here to get the loc variable for all URLs in the site
//for each URL in the collection, add it to the root element as here
//root.Add(
// new XElement("url",
// new XElement("loc", "http://google.com"),
// new XElement("changefreq", "daily")));
using (MemoryStream ms = new MemoryStream())
{
using (StreamWriter writer = new StreamWriter(ms, Encoding.UTF8))
{
root.Save(writer);
}
return Content(Encoding.UTF8.GetString(ms.ToArray()), "text/xml", Encoding.UTF8);
}
}
Por ejemplo, supongamos que tengo dos controladores, y cada controlador tiene dos acciones asociadas a ellos:
HelpController
- Editar
- Crear
AboutController
- Compañía
- Gestión
Me parece que no puede encontrar la manera de obtener una lista de URL como:
- http://localhost/help/edit
- http://localhost/help/create
- http://localhost/about/company
- http://localhost/about/management
Recientemente, como respuesta de @ eduncan911, la mejor solución es usar http://mvcsitemap.codeplex.com/ proyecto activo y actualizado, soporte para el recorte de seguridad y generará sitemap.xml. También puede comprimir automáticamente el mapa del sitio si el agente lo admite y dividir el mapa del sitio en sub-sitemaps si el sitio es demasiado grande porque el sitemap.xml estándar tiene el límite para 50k nodos solamente. – CallMeLaNN
Gracias CallMeLaNN. Recientemente actualicé la respuesta para enumerar esos puntos y más, así como también el sitio al que se movió. – eduncan911