2009-08-18 16 views
13

Ich führe eine Anwendung aus, die über eigene Fehlerbehandlungsroutinen verfügt. Fehlerseiten werden beim Testen in der Entwicklungsumgebung korrekt angezeigt (Fehlerseiten werden korrekt angezeigt).
Jedoch den gleichen Code auf der Produktion IIS, werden Fehlerseiten ersetzt. Das Problem wird beschrieben here.IIS 7.0 zeigt keine benutzerdefinierten Fehlerseiten an

Ich frage mich nur, gibt es eine Möglichkeit, diese Einstellungen in web.config-Datei zu schreiben, anstatt den Code zu ändern.

Antwort

13

Ehrfurcht ist richtig (+1), aber zusätzlich: IIS 7 hat spezielle Handhabung in dem Blog-Beitrag beschrieben, den Sie verknüpft und this MSDN article. Wenn Sie HandleErrorAttribute für Ihre Aktion verwenden, ist dies bereits für Sie erledigt. Wenn nicht, müssen Sie folgendes einstellen:

filterContext.HttpContext.Response.TrySkipIisCustomErrors = true; 

... Sie selbst.

+0

Was war der Grund für diese Einstellung? –

+2

Offensichtlich spreche ich nicht für Microsoft. Ich kann nur ihre Motivationen erraten. Meine wilde Vermutung ist, dass Benutzer echte Fehlermeldungen für "unheimlich" halten. Daher die falschen Fehlerseiten in IE und diese Funktion. Daher wahrscheinlich die Seiten, die Sie in Ihrer MVC-Anwendung anzeigen. Sie müssen IIS lediglich mitteilen, dass Sie bereits eine benutzerfreundliche Fehlermeldung erhalten haben, damit es nicht gestört werden muss. –

4

Es gibt eine Einstellung in der Datei Web.config Anwendungen ist die Debug-Modus einzustellen:

Standard ist:

<customErrors mode="RemoteOnly" /> 

Versuchen Sie es auf „Off“ (Hinweis Einstellung: ist der Wert Groß- und Kleinschreibung !)

<customErrors mode="Off" /> 

ich bin, wenn diese Einstellung von IIS7 nicht sicher eingehalten wird, aber da Sie ein anderes Verhalten auf der Entwicklungsumgebung von der entfalteten sehen, das war meine erste Vermutung. Um zu testen, ob dies der Fall ist, können Sie versuchen, Ihre Entwicklungsanwendung von einem anderen Computer in Ihrem Netzwerk aus zu starten, wenn Sie diese Möglichkeit haben.

+0

Ich habe versucht, aber es hat nicht funktioniert. Ich habe auch einige Servereinstellungen in die .config-Datei aufgenommen, aber es stellte sich heraus, dass IIS sie irgendwie ignoriert. –

+0

http://stackoverflow.com/questions/2480006/what-is-the-difference-between-customerrors-and-httperrors –

8

Nun, es stellte sich heraus, dass die folgenden Zeilen Web.config-Datei hinzugefügt werden sollten, um zu erzwingen, dass IIS 7 benutzerdefinierte Seiten anzeigen.

Put in system.webServer Abschnitt

<httpErrors errorMode="Detailed"> <!-- this is impornant --> 
<!-- Some custom error pages url go here --> 
</httpErrors> 
1

Ich fand heraus, dass der <system.webServer> Abschnitt der Anfrage durch verpassensollten. Dann kann meine App meine benutzerdefinierte Seite anzeigen.

<system.webServer> 
    <httpErrors existingResponse="PassThrough" /> 
</system.webServer> 

Sie können auch die erweiterte Version What to expect from IIS7 custom error module wissen lesen: Sie können diese Zeilen in Ihrem Web.Config verwenden.