Utilizzando una pagina di errore globale (stupida) per tutti gli errori ASP.NET MVC?
-
10-07-2019 - |
Domanda
Ho impostato e configurato ELMAH per registrare tutti i miei errori su un progetto ASP.NET MVC a cui sto lavorando. Sarà utilizzato da un piccolo gruppo di utenti che non hanno bisogno di sapere troppo, quindi ogni volta che c'è qualsiasi errore (404, InvalidOperation, Y2K ... qualunque cosa!), Voglio solo mostrare loro una visualizzazione di errore predefinita generica con le istruzioni per chiamare il nostro helpdesk e tenersi stretti.
ELMAH è funzionante e funzionante, che il nostro staff di helpdesk utilizzerà per diagnosticare errori e registrare / elevare i ticket, se necessario. Il mio problema è mostrare la mia pagina di errore globale. Sto usando la soluzione pubblicata qui per garantire che ELMAH e [HandleError] suonino bene insieme.
Web.config è impostato come segue:
<customErrors mode="On" />
Se accedo a http: // application / Home / Index che presenta un errore LINQ (la sequenza non contiene elementi), quindi mi viene mostrata la mia bella e generica visualizzazione degli errori da /Shared/Error.aspx ma se provo ad accedere a http: / / application / Fake / Broken che è un 404 quindi ottengo il solito ASP.NET
Server Error in '/' Application.
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
Requested URL: /Fake/Broken
Tuttavia, entrambi gli errori vengono registrati perfettamente da ELMAH.
Soluzione
Se stai solo cercando di mostrare una pagina di errore generica, puoi specificare la pagina stessa:
<customErrors mode="On" defaultRedirect="error.htm" />
Ciò comporterebbe che tutte le eccezioni non gestite, la pagina non trovata, ecc. mostrino il tuo "errore.htm". Puoi essere più specifico sui codici di errore:
<customErrors mode="On">
<error statusCode="404" redirect="notfound.htm"/>
</customErrors>
Altri suggerimenti
se stai usando iis 7 potresti dover aggiungere questo al tuo
<system.webServer>
sezione nel file di configurazione
<httpErrors errorMode="Custom" existingResponse="PassThrough" />