viernes, 7 de septiembre de 2012

Pagina de Error en ASP .NET


Personalizar los molestos pantallas amarillas en nuestro servidor de producción.


Cuando hacemos una aplicacion aspnet por lo regular olvidamos manejar los errores y por lo general aparece una pantalla muy parecida a la que tienen a su mano izquierda.

Lo ideal es que no aparesca esta pantalla, manejar el error y llevar un estricto control de los mismos.
Personalización de la página de error 

Para personalizar la página de error por defecto, tiene que cambiar la configuración de la aplicación en el web config.

Hay tres modos de error en el que una aplicación ASP.Net que puede trabajar: 

Off Mode 
On Mode 
RemoteOnly Mode

El atributo de modo de error determina si o no un mensaje de error se muestra ASP.Net. De forma predeterminada, el valor de modo está Comentariado sin embargo funciona con la opcion "On Mode" y muestra la pantalla antes mencionada.

Off Mode 
Cuando el atributo de error está en "Off", ASP.Net utiliza su página de error por defecto para los usuarios locales y remotos en caso de un error. 

On Mode 
En el caso de "On Mode" , ASP.Net definidos por el usuario utiliza la página de error personalizados en lugar de su página de error por defecto para los usuarios locales y remotos. Si una página de error personalizada no se especifica, ASP.Net muestra la página de error que describe cómo habilitar la visualización remota de errores. 

RemoteOnly 
ASP.Net página de error se muestra sólo a los usuarios locales. Peticiones remotas comprueba en primer lugar los ajustes de configuración de la página de error personalizado o, finalmente, mostrar un error de IIS.


Ahora que ya conocemos como funciona la teoria pasemos a la parte practica.

1.) Dirijase al web config y cambie las entradas de customErrors de tal manera que funcionar customerrors. Ejemplo.

Web.Config File
< ?xml version="1.0" encoding="utf-8" ? >
< configuration >
< system.web >
< customErrors defaultRedirect="error.htm" mode="On"/>
< /system.web >
< /configuration >

Como se muestra en el archivo de configuración, el atributo "defaultRedirect" se ha establecido por la pagina error.htm. La página de error puede ser una página web ASP.Net, esta puede ser una página ASP o una página HTML simple. 

Ejemplo de la pagina que mostrara el error:
Error.htm

< html xmlns="http://www.w3.org/1999/xhtml" >
< head >
< title >< /title >
< /head >
< body >
Sentimos mucho las molestias causadas, estamos trabajando para servirle mejor...
< br >
< /body >
< /html >

Notificar al Administrador
Ya hemos mostrado una pagina mas bonita de errores ahora nos toca llenar
un control de los errores, por esa razon escribiremos entradas al Event Log del sistema operativo.

Para lograr este objetivo agregue o edite su global.asax en el evento Application_Error.
pero primero agregue unos usign en la parte superior del archivo y luego busque el evento Application_Error y agregue necesario aqui un ejemplo.

< %@ Import Namespace="System.Web" % >
< %@ Import Namespace="System.Web.SessionState" % >
< %@ Import Namespace="System.Diagnostics" % >
void Application_Error(object sender, EventArgs e) 

string ErrorDescription = Server.GetLastError().ToString();
string EventLogName = "ErrorSample";
if ((!EventLog.SourceExists(EventLogName))) 
{
EventLog.CreateEventSource(EventLogName, EventLogName);
}
EventLog Log = new EventLog();
Log.Source = EventLogName;
Log.WriteEntry(ErrorDescription, EventLogEntryType.Error);


}

En este mismo evento podria enviar un mail, ejemplo:

< %@ Import Namespace="System.Web" % >
< %@ Import Namespace="System.Web.SessionState" % >
< %@ Import Namespace="System.Web.Mail" % >


void Application_Error(object sender, EventArgs e) 


MailMessage mail = new MailMessage();
string ErrorMessage = "The error description is as follows : " + Server.GetLastError().ToString;
mail.To = "administrator@domain.com";
mail.Subject = "Error in the Site";
mail.Priority = MailPriority.High;
mail.BodyFormat = MailFormat.Text;
mail.Body = ErrorMessage;
SmtpMail.Send(mail);

}

O puede unir ambos ejemplos, espero les sirva.


No hay comentarios:

Publicar un comentario

Comenta :