-
20.03.2010 23:16:24
SitemapResult mit ASP Net MVC und C#
XML Sitemap als ASP Net MVC ActionResult
from: cpom | Comments: 0 -
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">ein Beispiel für ein gültiges Sitemap-Dokument
<url>
<loc>http://www.besipiel.org/Index</loc>
<changefreq>daily</changefreq>
</url>
<url>
<<loc>http://www.besipiel.org/About</loc>
</url>
</urlset>
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
Neueste Artikel:
- Team Foundation Service Preview TFS in the Cloud von: cpom
- Ein erster Eindruck von Visual Studio 11 Express von: cpom
- Ein erster Eindruck von TFS 11 Express von: cpom
- Disabling IPv6 in Windows 7 or Vista von: cpom
- Die Wiederbelebung von: cpom
Kommentare augeschaltet