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.

È stato utile?

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" />
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top