2008-08-21 11 views
18

Ich möchte in der Lage sein, die Ausnahme zu erfassen, die ausgelöst wird, wenn ein Benutzer einen nicht vorhandenen Controller anfordert und ihn auf eine 404-Seite umleitet. Wie kann ich das machen?Wie leite ich einen Benutzer auf eine benutzerdefinierte 404-Seite in ASP.NET MVC um, anstatt eine Ausnahme auszulösen?

Zum Beispiel fordert der Benutzer http://www.nosite.com/paeges/1 an (sollte/pages/ sein). Wie kann ich es so einrichten, dass sie auf den 404-Bildschirm anstatt auf den Ausnahmebildschirm umgeleitet werden?

Antwort

6

Werfen Sie einen Blick auf this page für das Routing Ihrer 404-Fehler auf eine bestimmte Seite.

+2

Sie können die Antwort auf umfassen die entsprechenden Einzelheiten sie aktualisieren möchten. – jgauffin

16

Verwenden Sie einfach eine Route:

// We couldn't find a route to handle the request. Show the 404 page. 
routes.MapRoute("Error", "{*url}", 
    new { controller = "Error", action = "404" } 
); 

Da dies ein globaler Handler sein, setzen Sie es den ganzen Weg am Boden unter der Standardroute.

+6

Ist das richtig? Weil sicher, wenn ich eine Route für {controller}/{aktion}/{id} definiere, sagen wir, und der Benutzer gibt die URL mit einem Controller ein, der nicht existiert, dann wird er gelbes Bildschirm, da die erste Route übereinstimmt und Ihre Fangen alle werden nie erreicht werden? – jmcd

+0

Ich habe es gerade ausprobiert und bekomme immer noch den Standard-Gelb-Bildschirm 404. –

+1

Das funktioniert, aber es bedeutet, dass Sie manuelle Routen für alle Ihre Controller haben müssen, dh keine '{Controller}/{Action}/{ID } 'Stattdessen müssten Sie' Home/{Aktion}/{ID} ',' Konto/{Aktion}/{ID} 'usw. –