Domanda

Sto cercando di generare al volo un file sitemap.xml per un particolare sito Web asp.net.

Ho trovato un paio di soluzioni:

  1. chinookwebs
  2. cervoproject
  3. newtonking

Chinookwebs funziona benissimo ma sembra un po' inattivo al momento ed è impossibile personalizzare i tag "priority" e "changefreq" di ogni singola pagina, ereditano tutti lo stesso valore dal file di configurazione.

Voi che soluzioni usate?

È stato utile?

Soluzione

Di solito utilizzerai un file Gestore HTTP per questo.Vista la richiesta di...

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

...il tuo gestore risponderà con una mappa del sito XML formattata.Il fatto che la mappa del sito venga generata al volo, da un database o da qualche altro metodo dipende dall'implementazione del gestore HTTP.

Ecco più o meno come sarebbe:

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

Questo codice può essere migliorato ma questa è l'idea di base.

Altri suggerimenti

Gestore personalizzato per generare la mappa del sito.

L'utilizzo di ASP.NET MVC ha semplicemente creato un breve pezzetto di codice utilizzando la libreria di generazione XML .NET e quindi lo ha semplicemente passato a una pagina di visualizzazione su cui era presente un controllo XML.Nel code-behind ho collegato il controllo con ViewData.Sembrava che questo sovrascrivesse il comportamento predefinito delle pagine di visualizzazione per presentare un'intestazione diversa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top