Pregunta

He configurado y configurado ELMAH para registrar todos mis errores en un proyecto ASP.NET MVC en el que estoy trabajando. Será utilizado por un pequeño grupo de usuarios que no necesitan saber demasiado, por lo que siempre que haya cualquier tipo de error (404, InvalidOperation, Y2K ... ¡cualquier cosa!) Solo quiero muéstreles una vista de error genérica predeterminada con instrucciones para llamar a nuestro servicio de asistencia y sentarse tranquilamente.

ELMAH está funcionando correctamente y nuestro personal de servicio de asistencia lo utilizará para diagnosticar errores y registrar / elevar los tickets según sea necesario. Mi problema es hacer que se muestre mi página de error global. Estoy usando la solución publicada aquí para garantizar que ELMAH y [HandleError] jueguen bien juntos.

Web.config se configura así:

<customErrors mode="On" />

Si accedo a http: // application / Home / Index que tiene un error LINQ (La secuencia no contiene elementos), luego se me muestra mi agradable y genérica vista de error de /Shared/Error.aspx pero si intento acceder a http: / / application / Fake / Broken que es un 404, entonces obtengo el ASP.NET habitual

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

Ambos errores se registran perfectamente por ELMAH sin embargo.

¿Fue útil?

Solución

Si solo desea mostrar una página de error genérico, puede especificar la página en sí:

<customErrors mode="On" defaultRedirect="error.htm" />

Eso provocaría que todas las excepciones no controladas, páginas no encontradas, etc. muestren su " error.htm " ;. Sin embargo, puede ser más específico sobre los códigos de error:

<customErrors mode="On">
  <error statusCode="404" redirect="notfound.htm"/>
</customErrors>

Otros consejos

si está utilizando iis 7, es posible que deba agregar esto a su

<system.webServer>

sección en el archivo de configuración

<httpErrors errorMode="Custom" existingResponse="PassThrough" />
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top