Frage

Ich versuche, im laufenden Betrieb eine sitemap.xml für eine bestimmte asp.net-Website zu generieren.

Ich habe ein paar Lösungen gefunden:

  1. Chinookwebs
  2. Cervoprojekt
  3. Newtonking

Chinookwebs funktioniert großartig, scheint aber im Moment etwas inaktiv zu sein und es ist unmöglich, die Tags „priority“ und „changefreq“ jeder einzelnen Seite zu personalisieren, sie erben alle den gleichen Wert aus der Konfigurationsdatei.

Welche Lösungen nutzt ihr?

War es hilfreich?

Lösung

Normalerweise verwenden Sie eine HTTP-Handler dafür.Angesichts einer Anfrage für...

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

...Ihr Handler antwortet mit einer formatierten XML-Sitemap.Ob diese Sitemap spontan, aus einer Datenbank oder mit einer anderen Methode generiert wird, hängt von der HTTP-Handler-Implementierung ab.

So ungefähr würde es aussehen:

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

Dieser Code kann verbessert werden, aber das ist die Grundidee.

Andere Tipps

Benutzerdefinierter Handler zum Generieren der Sitemap.

Mithilfe von ASP.NET MVC wurde mithilfe der .NET-XML-Generierungsbibliothek ein kurzes Stück Code erstellt und dieser dann einfach an eine Ansichtsseite übergeben, auf der sich ein XML-Steuerelement befand.Im CodeBehind habe ich das Steuerelement mit den ViewData verknüpft.Dies schien das Standardverhalten von Ansichtsseiten zu überschreiben, um eine andere Kopfzeile anzuzeigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top