Benutzerdefinierte Fehlerseite wird nicht angezeigt, obwohl ich CustomError="On" gesetzt habe

8

Ich verwende Visual Studio 2012 mit dem MVC 4 Framework und möchte die Seite mit den fehlerhaften Fehlern des freigegebenen Ordners sehen, wenn eine Ausnahme nicht behandelt wird. (Ich weiß, als Entwickler muss ich die Fehlerdetails sehen, aber ich wollte nur diese Einstellung testen)
Bis jetzt weiß ich, dass das Hinzufügen des folgenden Codes im Abschnitt system.web von web.config den Trick

machen sollte %Vor%

Leider bekomme ich anstelle meiner freundlichen Fehlerseite folgendes:

  

Serverfehler in '/' Anwendung.

     

Runtime Error Beschreibung: Ein Anwendungsfehler trat bei der   Server. Die aktuellen benutzerdefinierten Fehlereinstellungen für diese Anwendung verhindern   Die Details des Anwendungsfehlers können nicht angezeigt werden.

     

Details: Um die Details dieser spezifischen Fehlermeldung zu aktivieren   sichtbar auf dem lokalen Servercomputer, erstellen Sie bitte ein   Tag in einer Konfigurationsdatei "web.config" im Stammverzeichnis   Verzeichnis der aktuellen Webanwendung. Dieses Tag   sollte dann sein Attribut "mode" auf "RemoteOnly" gesetzt haben. Ermöglichen   die Details, die auf entfernten Rechnern angezeigt werden sollen, stellen Sie bitte "mode" auf   "Aus".

%Vor%
  

Hinweise: Die aktuelle Fehlerseite, die Sie sehen, kann durch a ersetzt werden   benutzerdefinierte Fehlerseite durch Ändern des Attributs "defaultRedirect" des   Konfigurations-Tag der Anwendung, um auf einen Benutzer zu verweisen   Fehlerseite der Fehlerseite.

%Vor%


Ich möchte es wie beschrieben tun und nicht mit einer Problemumgehung wie dem Hinzufügen einer Aktion zu HomeController, Festlegen von Routen oder etwas.
Ein Hinweis, dass dies funktionieren sollte, ist folgender:
Ссылка
(Wählen Sie links das Kapitel "Aktionsfilter" und springen Sie zu Minute 3:30)


UPDATE (Link geändert):
Ссылка
(Klicken Sie oben auf die dünne Linie, auf der "Controller in ASP.NET MVC 4" steht, dann klicken Sie auf "Action Filters" und springen Sie zu Minute 5:00)

Hat jemand eine Ahnung, warum ich die freundliche Fehlerseite mit der oben genannten Einstellung nicht sehen kann?
Vielen Dank im Voraus!

    
L4_ 10.10.2012, 15:55
quelle

5 Antworten

11

Hier ist eine Schritt für Schritt Anleitung,

Stellen Sie zunächst die Eigenschaft mode des "customErrors" auf "on". (Dies gibt an, dass benutzerdefinierte Fehler aktiviert sind.)

1. Code aus Web.config

%Vor%

Unten ist mein Controller-Code, ich habe das HandleError-Attribut für die Controller-Klasse angegeben. Um einen Fehler zu erzeugen, werfe ich eine Ausnahme aus der Index-Aktion.

2. Code von HomeController.cs

%Vor%

Wie Sie im folgenden Screenshot sehen können, habe ich eine Error.cshtml-Ansicht im Ordner Shared des Views-Ordners definiert.

3. Projektmappen-Explorer

Beachten Sie, dass die Error.cshtml-Ansicht (siehe unten) ein Modell von 'System.Web.Mvc.HandleErrorInfo'

verwendet

4. Code von Error.cshtml

%Vor%

Beim Ausführen des Projekts erhalte ich jetzt, anstatt den gelben Todschirm zu erhalten, die folgende Ausgabe.

Aus diesem Artikel

Aktualisierung:

Probieren Sie es aus, indem Sie ein neues Projekt erstellen, das sollte und funktioniert. Ich vermute, dass Ihre Error.cshtml -Datei möglicherweise kein Modell als @model System.Web.Mvc.HandleErrorInfo hat oder Sie mehrere Error.cshtml-Seiten in verschiedenen Ansichtsordnern haben.

    
Yasser 10.10.2012 17:18
quelle
5

Ich habe meinen Fehler behoben. Tatsächlich kann die Seite * _Layout * nicht gerendert werden, weil mein _Layout.cshtml stark in ein Basisansichtsmodell eingegeben wurde, in das HandleErrorInfo nicht eingefügt werden kann. Und Sie können diesen Seitenbindungsfehler nie sehen, da dies nur passiert, wenn customError aktiviert ist ... das ist einfach großartig.

    
rwei 14.09.2013 11:25
quelle
5

Ein Grund, der zu dem führen könnte, was Sie erleben:

Etwas in Ihrem _layout verursacht eine Ausnahme, wenn das 'Error.cshtml' rendern wird.

Führen Sie einen Test durch, indem Sie

hinzufügen %Vor%

in Ihrer 'Error.cshtml' Datei.

    
Olivier Leneveu 12.06.2014 14:45
quelle
1

Ich hatte das gleiche Problem, als ich die falsche web.config -Datei aktualisiert habe.

Es gibt ein web.config im Ordner Views und auch unter der Projektanwendungsseite.

Die Lösung wäre, web.config im Projekt zu aktualisieren.

    
Rajeev 19.03.2013 12:59
quelle
-1

Dies funktioniert nicht mit Visual Studio Express Edition. Es funktioniert, wenn Sie Professional oder Ultimate Edition von Visual Studio IDE verwenden.

    
Julius Depulla 26.01.2014 06:25
quelle