-
03/20/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 anzuzeigenUm 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 ControllerSelbstverstä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
Latest Entries:
- 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
- Generate keys to secure your WLAN von: cpom
Tags
XEN CENTOS X86_64 SUSE 10.2 DOMU DOM0 IT-NEWS JAMES GOSLING VISUAL STUDIO VIRTUAL BOX GOOGLE PERFORMANCE NEW GIGBYTE MEGIBYTE CERN OPENSSL 1.0.0 ORACLE SUN ATI TREIBER WORKAROUND NEWS JAVA NOVELL SCO UNIX COPYRIGHT ELENA REDHAT CENTOS UBUNTU LIVE CD APPLE IPAD START REVOLUTION VERMEINTLICH SQUID PROXY WINDOWS 7 VISTA XP UPDATE SETTINGS PROXYCFG NETSH WINHTTP C# SYSTEM.NET.MAIL. GPG ENCRYPTED EMAIL EXTERNAL PROCESS 2010 EXPRESS FIRST LOOK WPF EDITOR REGISTRATION GERMAN BITLOCKER PUTTY SECURE SSH LOGIN VERSCHLÜSSELT USB STICK WLAN WEP WPA2 SMALL PROGRAM W00TW00T VULNERABILITY SCANNER LINUX IPTABLES STRING MATCH MONGODB NORM TEST DATA DRIVEN APPLICATION PROJECT TRANSPARENT SOLARIS GATEWAY LUCID LYNX UBUNTU 64 BIT PREVIEW CORE I7 ATOM BLADE 100 10 WORKSTATION REVIVING NVRAM VISUAL STUDIO EXPRESS 11 BETA REVIEW WEB WINDOWS8 WINRT TEAM FOUNDATION SERVER TFS FIRST LOOK C# .NET ÜBERBLICK FEATURES INSTALLATION SETUP DISABLE IPV6 WINDOWS VISTA 2008 R2 NETWORK. PROTOCOL TUNNEL ASP .NET SITEMAP MVC ACTIONRESULT WRITE TO STREAM

