• 20.03.2010 23:16:24

    SitemapResult mit ASP Net MVC und C#
    XML Sitemap als ASP Net MVC ActionResult
    from: cpom | Comments: 0

  • Mit relative wenig Aufwand kann man in einer ASP.Net MVC Anwendung seine Sitemap selbst aus dem vorhandenen Datenbestand erzeugen indem man eine Klasse von ActionResult ableitet.

  • Eine stets aktuelle Sitemap zu haben, damit Google & Co. den vorhanden Content auch finden sollte für jeden Seitenbetreiber der daran interessiert ist, eine Selbstverständlichkeit sein. Die Sitemap unterstützt dieSuchmaschinen- Bots beim Crawlen, gilt aber eigentlich nur als Empfehlung. Was wie und wie oft indiziert wird liegt letzten Endes im Ermessen der Suchmaschinebetreiber.

    Die hier kurz vorgestellte Lösung ist an sich nicht zwingend als production-ready zu betrachten, sondern nur als Anleitung, wie man eine Sitemap relativ einfach umsetzen könnte. Als Grundlage dient die Annahme, dass eine Sitemap nach dem Sitemap Protocol v.09 lediglich ein XML-Dokument ist, das vom Webserver an den Anfragenden ausgeliefert wird. Dabei ist es unerheblich, ob es als statische Datei vorliegt oder dynamisch aus vorhandenen Daten in der Datenbank erzeugt und dann direkt als Response gesendet wird. Letzteres hat den Vorteil, dass das ausgelieferte Dokument stets aktuell ist und stellt bei kleineren bis mittleren Sites einen durchaus praktikablen Ansatz dar.

    Um die Sitemap selbst zu erzeugen fügt man seinem Projekt eine neue Klasse hinzu und nennt sie z.B. SitemapResult, die Klasse SitemapResult selbst wird von der abstrakten Klasse ActionResult abgeleitet und überschreibt die Methode ExcuteResult(ControllerContext context)

    SitemapResult - abgeleitet von Actionresult

    Innerhalb dieser Methode erzeugt man einen XmlWriter und schreibt z.B. wie in diesem Beispiel direkt in den Responsestream (context.HttpContext.Response.OutputStream), nachdem man den Ausgabetyp auf "text/xml“ (context.HttpContext.Response.ContentType = "text/xml" ) festgelegt hat .

    XmlWriter - klicken um anzuzeigen

    Um ein gültiges XML-Dokument zu erzeugen muss man sich an die Vorgaben des Sitemap-Protocols (siehe sitemaps.org) halten, das Rootelement ist <urlset> und die Schemainformationen sind unter <http"//www.sitemaps.org/schemas/sitemap/0.9> hinterlegt. Jede URL , die aufgeführt werden soll, wird in eine ><url>-Element inkludiert und muss mindestens das Tochterelement <loc> enthalten. Es empfiehlt sich, z.B. für Portalseiten, das Element <changefreq> mit anzugeben.

    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
        <url>
            <loc>http://www.besipiel.org/Index</loc>
            <changefreq>daily</changefreq>
        </url>
        <url>
            <<loc>http://www.besipiel.org/About</loc>
        </url>
    </urlset>
    ein Beispiel für ein gültiges Sitemap-Dokument

    Um das fertige SitemapResult aus der Anwendung aufrufen zu können, muss nun noch in dem Controller über den die Sitemap zur Verfügung gestellt werden soll, eine Action hinzugefügt werden. Um z.B. die Sitemap über die URL http"//www.beispiel.org/Index/Sitemap abrufbar zu machen, fügt man dem IndexController das ActionResult Sitemap hinzu und anstatt des Views oder eines anderen ActionResult ist SitemapResult der Rückgabewert.

    SitemapResult - Aufruf im Controller

    Selbstverständlich ist das kleine Beispiel nicht vollständig, da es nur als Fingerzeig gedacht war/ist. Sinnvolle Erweiterungen wären hier sowohl die Übergabe einer Liste von Elementen als Parameter an den Konstruktor als auch ein Zugriff auf den Datenbestand innerhalb der Klasse SitemapResult.

    (Sourecode sollte im zweiten Teil folgen) Der Quellcode ist mit der Kombination Apache/mod_mono 2.6 und mit dem IIS 6 und 7 getestet und lauffähig.


    Kommentar hinzufügen | nach oben

  • HTML-Tags in den Kommentaren sind abgeschaltet, der Name und die Email-Adresse werden benötigt. Die Email-Adresse ist im gespeicherten Kommentar nicht sichbar
  • Leave a Comment

    Captcha



Kommentare augeschaltet

Profi-Admin
profi-admin.de
profi-admin.com
profi-admin.eu

Projekte
scprojekt.de
2bsg.de

Answerengine
smartjump.de

Portale
berufstaetigeeltern.de
berufstätigeeltern.de

Weitere
der-gewerbespezialist.de
dergewerbespezialist.de

2007 - 2010 ©   Claudius Pomorska

Profi-Admin is powered by MBlog Portal

Impressum