.NET
ASP.NET MVC 2: Custom ErrorPages anlegen
Posted on .Wenn man Webseiten entwickelt möchte man diese natürlich möglichst anschaulich für den Nutzer gestalten, und dazu gehört es auch für den Benutzer anschauliche und auch verständliche Seiten zu präsentieren, auch wenn mal ein Fehler auftaucht. Im Normalfall passen die Default-Fehlerseiten von ASP.NET leider nicht ins Bild der restlichen Seite, weswegen wir gezwungen sind unsere eigenen Fehlerseiten anzulegen.
Bild 1: Typische 404 Fehlermeldung von ASP.NET
Eigene Fehlerseiten sind unter ASP.NET MVC 2 schnell in vier Schritten eingerichtet.
1. Änderungen an der Web.config vornehmen
Zunächst müssen in der Web.config die customErrors eingeschaltet werden. Hier können die Attribute „defaultRedirect“, welches die Adresse definiert die im Falle eines Fehlers aufgerufen wird und „mode“, dass einstellt ob Fehler angezeigt werden sollen oder nicht.
Mit den inneren „error“-Ästen kann man dazu noch spezifische Seiten zu einzelnen Fehlercodes zuweisen. Man kann hier sowohl eine absolute Adresse angeben oder nur eine relative. Für alle nicht spezifizierten Errorcodes wird die Url aus dem customError Tag benutzt.
Wenn ihr diese Einstellungen Lokal testen wollt dann solltet ihr auch den „mode“ auf „On“ stellen, da ihr euere Seiten sonst nicht zu Gesicht bekommt.
2. Anlegen des Controllers für die Fehlerbehandlung
Wie ihr sehen könnt habe ich hier eine lokale Adresse angegeben. Hierbei wird der Controller „Error“ aufgerufen und je nach Fehlercode eine andere Methode.
Im Controller haben wir hier eigentlich nichts besonderes:
Ich war an dieser Stelle mal faul und habe nur eine einzige View für alle Fehler angelegt, die dann die übergebene message ausgibt. Dazu kommt noch, dass wir der Response noch den passenden HttpStatusCode übergeben, da manche Anwendungen danach gehen und so prüfen, ob ein Aufruf erfolgreich war.
3. Die View
Wie eben erwähnt macht die View in meinem Beispiel nichts anderes als den Inhalt der Messagevariable auszugeben. Hier könnt ihr natürlich eurer Kreativität freien Lauf lassen und auch für jeden Error eine einzelne View anfertigen.
4. Glogal.asax – Catch All Route registrieren
Zum Schluss sollten wir noch eine sogenannte Catchall Route einrichten, die wir nach allen unseren Routen positionieren damit diese nur greifen kann, wenn keine der anderen gepasst hat, diese Route wird in jedem Fall aufgerufen, wenn keine der vorderen gepasst hat.
Wenn die CatchAll Route greift wird der Home Controller aufgerufen und die Action „NotFound“ ausgeführt.
Im Grunde sind wir nun fertig, alle von uns eingetragenen Fehler werden nun abgefangen und durch von uns präparierten Seiten ersetzt. Das einzige was noch passieren kann ist dass ihr im IIS andere ErrorPages eingestellt habt, dann dann werden diese angezeigt und nicht die von euch erstellten. Hier müsst ihr die „Error Responses“ auf „Detailed errors“ stellen.
Sebastian Gross
http://www.bigbasti.comSebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.
Author bigbasti87
Posted at 13:17 21. Oktober 2010.
Bloggd: ASP.NET MVC 2: Custom ErrorPages anlegen – http://blog.bigbasti.com/asp-net-mvc-2-c… #aspnet #mvc