Question

J'essaie de générer un sitemap.xml à la volée pour un site Web asp.net particulier.

J'ai trouvé quelques solutions :

  1. toiles de chinook
  2. projet cervo
  3. newtonien

Chinookwebs fonctionne très bien mais semble un peu inactif pour le moment et il est impossible de personnaliser les balises "priority" et "changefreq" de chaque page, elles héritent toutes de la même valeur du fichier de configuration.

Quelles solutions utilisez-vous ?

Était-ce utile?

La solution

Habituellement, vous utiliserez un Gestionnaire HTTP pour ça.Face à une demande de...

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

... votre gestionnaire répondra avec un plan du site XML formaté.Que ce plan de site soit généré à la volée, à partir d'une base de données ou d'une autre méthode dépend de l'implémentation du gestionnaire HTTP.

Voici à peu près à quoi cela ressemblerait :

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

Ce code peut être amélioré mais c'est l'idée de base.

Autres conseils

Gestionnaire personnalisé pour générer le plan du site.

L'utilisation d'ASP.NET MVC a simplement généré un peu de code à l'aide de la bibliothèque de génération XML .NET, puis l'a transmis à une page d'affichage contenant un contrôle XML.Dans le code-behind, j'ai lié le contrôle avec ViewData.Cela semblait remplacer le comportement par défaut des pages d'affichage pour présenter un en-tête différent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top