Presentador Virtual e24Presenter
Encuentra usuarios de Twitter en tu ciudad con LocaFollow

votarEnviar E-Mail cuando se produce un error en Asp.NET

Autor: S3rGy0 | Archivado en: ASP el día 18/Ene/2005

Algo muy útil a la hora de desarrollar páginas web con Asp.NET es que te llegue un correo cada vez que se produzca un error en el código servidor (código visual basic). Para realizar esto lo primero que se te viene a la cabeza es colocar el código susceptible de generar errores dentro de un try & catch. Esto está bien con una aplicación pequeña, pero cuando estamos escribiendo una web con muchos accesos a base de datos o a servicios webs es un auténtico coñazo tener que colocar try & catch por doquier para terminar mostrando el mismo mensaje (un mensaje estandar que no sea tan feo como el que tiene Asp.NET por defecto)

Una forma más simple de enviarnos un e-mail cada vez que se produzca un error es utilizando la función Application_Error del Global.asax. Cada vez que se produce un error en la parte servidora la aplicación se va a esta función para comprobar que hay código. Pues bien, aquí colocaremos la sentencia:

server.transfer(”FormularioDeErrores.aspx”)

Dos observaciones:

1.- Como podéis ver se llama a un “formulario de errores”. De esta manera cada vez que se produzca un error el usuario verá siempre el mismo error, que procuraremos que sea más bonito que la que tiene Asp.NET por defecto ;). Mientras el usuario ve este bonito error y se acuerda de nuestra familia, internamente este formulario nos enviará un correo indicandonos qué usuario a realizado la acción que produjo el error, la descripción del error, etc …

2.- Si os fijáis he utilizado server.transfer en lugar de response.redirect, esto es porque usando el segundo se pierde la información que se tenga previamente (como la descripción del error, que al fin y al cabo, es lo que nos interesa ;), mientras que con server.transfer esa información se guarda para ser mandada posteriormente por e-mail.

Además de esto hay que modificar el fichero Web.Config, sustituir:

< customerrors mode=”default” / >

por:

< customerrors mode=”Off” / >

De esta manera se mostrará la descripción del error al usuario, pero como este error lo vamos a capturar para ser posteriormente enviado por e-mail, el usuario seguirá viendo el hermoso mensaje de error y acordándose (como siempre) de nuestra familia. Si no especificamos esto, no habrá ningún mensaje que se pueda mandar por correo.

Algo opcional es irnos a “Servicios de Internet Information Server” dentro del panel de control (Herramientas Administrativas) y pinchar en las propiedades de nuestra aplicación; pinchamos en la pestaña “Seguridad de directorios” y pulsamos sobre “Modificar”. Desmarcamos la casilla “Acceso anónimo”. Esto no es necesario para que el proceso se efectúe correctamente, sólo se utilizará si queremos saber qué usuario ha producido el error.

El último paso es irnos al formulario de errores y en el page_load del código servidor mandar un e-mail cuyo cuerpo sea la descripción del error. Todo esto se puede ampliar con la información que queramos: por ejemplo, algo que utilizo mucho introducir en una variable de session cadenas SQL que pienso que puedan ser sensibles a errores. Esta variable la mando también en el correo y así puedo saber por qué se produjo el error. Sólo es cuestión de echarle imaginación.

Espero que haya quedado más o menos claro, si tenéis alguna duda preguntad sin miedo.

Saludos.


  • Digg
  • del.icio.us
  • Facebook
  • Google
  • LinkedIn
  • Meneame
  • MySpace
  • Technorati
  • TwitThis
Posts Relacionados

Deja un comentario.