2009-08-18 3 views
13

Sto eseguendo un'applicazione con i propri gestori di errori. Le pagine di errore vengono visualizzate correttamente durante il test nell'ambiente dev (le pagine di errore sono visualizzate correttamente).
Tuttavia lo stesso codice sull'IS di produzione, le pagine di errore sono sostituite. Il problema è descritto here.IIS 7.0 non visualizza pagine di errore personalizzate

Mi chiedo solo un modo per scrivere queste impostazioni nel file web.config invece di modificare il codice.

risposta

13

Awe ha ragione (+1), ma in aggiunta: IIS 7 ha una gestione speciale descritta nel post del blog che hai collegato e this MSDN article. Se stai usando HandleErrorAttribute sulla tua azione, questo è già fatto per te. In caso contrario, dovrai impostare:

filterContext.HttpContext.Response.TrySkipIisCustomErrors = true; 

... te stesso.

+0

Qual è stato il motivo di questa impostazione? –

+2

Ovviamente, non parlo per Microsoft. Posso solo intuire le loro motivazioni. La mia ipotesi è che gli utenti considerino i messaggi di errore reali come "spaventosi". Quindi, le pagine di errore falso in IE e questa funzionalità. Quindi, probabilmente, le pagine che stai visualizzando nella tua applicazione MVC. Devi solo dire a IIS che hai già fornito un messaggio di errore user-friendly, quindi non ha bisogno di preoccuparsi. –

4

C'è un'impostazione nel file web.config applicazioni per impostare la modalità di debug:

default è:

<customErrors mode="RemoteOnly" /> 

Provare a impostarlo su "Off" (Nota: il valore è case sensitive !)

<customErrors mode="Off" /> 

non sono sicuro se questa impostazione è rispettato da IIS7, ma dal momento che si vede un comportamento diverso sul vostro ambiente di sviluppo dal schierato, questa è stata la mia ipotesi pugno. Per verificare se questo è il caso, puoi provare a eseguire la tua app di sviluppo da una macchina diversa nella tua rete se hai questa possibilità.

+0

Ho provato ma non ha funzionato. Ho anche incluso alcune impostazioni del server nel file .config ma ho scoperto che IIS in qualche modo le ignora. –

+0

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

8

Bene Si è scoperto che per forzare IIS 7 a mostrare pagine personalizzate, è necessario aggiungere le seguenti righe al file web.config.

Put nella sezione system.webServer

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

ho scoperto che la sezione <system.webServer> può lasciare che la richiesta di passaggio. Quindi, la mia app può visualizzare la mia pagina personalizzata. È possibile utilizzare queste linee nel vostro Web.Config:

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

Si può anche leggere la versione estesa di sapere What to expect from IIS7 custom error module.