2012-11-06 13 views
5

Ich habe in dieser web.config <system.webServer>MVC4 Benutzerdefinierte 404-Seite?

<httpErrors errorMode="Custom" defaultResponseMode="ExecuteURL"> 
    <remove statusCode="404" subStatusCode="-1" /> 
    <error statusCode="404" subStatusCode="-1" path="/cv/" responseMode="ExecuteURL" /> 
</httpErrors> 

Der Weg, den vorübergehend hier verwendet wird [myapplication]/cv/eine Seite zurück.

Aber wenn ich zu [myapplication]/[etwas, was nicht existiert] gehen, um eine 404-Antwort zu erhalten, passiert nichts passiert.

Dies funktioniert derzeit auf meiner alten Webformular-Website, aber ich kann es nicht auf einer MVC4-Website arbeiten. Wie kann ich das machen? (Ich will nicht die „Redirect/Datei“ Methoden verwenden)

Antwort

10

Dies ist, was ich in einem aktuellen MVC-4-Projekt habe:

<customErrors mode="On" defaultRedirect="~/Error/General"> 
    <error statusCode="404" redirect="~/Error/Http404" /> 
</customErrors> 

Ich habe einen Fehler-Controller und Ansichten für „General "und" Http404 "(Aktionsmethoden).

Funktioniert wie ein Charme.

+1

Ich habe dies mehrmals versucht, aber es zeigt weiterhin die Standard ASP Fehler Seite – Sinaesthetic

+0

Haben Sie auch einen Fehlercontroller und die Ansichten erstellt? http://stackoverflow.com/questions/13905164/how-to-make-custom-error-pages-work-in-asp-net-mvc-4 –

+3

Ich tat. Ich habe jedoch mein Problem gefunden. Ich gab tatsächlich ein HttpStatusCodeResult wie das Framework normalerweise zurück. Anscheinend wird das nicht als Fehler aufgefasst, so dass die benutzerdefinierten Fehlerseiten nie aufgerufen werden. Ich habe meinen Code geändert, um stattdessen eine HttpException zu erstellen, und es funktioniert jetzt. Ich bin mir nicht sicher, was ich davon halte – Sinaesthetic

3

Ein Teil des Problems könnte auch von der Tatsache herrühren, dass das <customErrors>-Tag kein gültiges Kind von <system.webServer> ist. Versuchen Sie es stattdessen in <system.web>.