En ASP.NET 2.0, los eventos se pueden monitorear utilizando el atributo HealthMonitoring. El atributo healthMonitoring es un proveedor basado en métodos donde puede construir su propio proveedor. Usando el atributo healthMonitoring, podemos registrar errores, eventos exitosos, etc., para diferentes fuentes de datos, como registros de eventos, Sql Server e incluso crear nuestros propios proveedores heredando la clase WebEventProvider. En este artículo, explicaré cómo configurar una aplicación web que detecta errores de SqlServer y envía un correo electrónico a la dirección de correo electrónico de alguien. Primero, eche un vistazo al fragmento del programa HealthMonitoring en web.config, donde puede crear los eventos que utilizará.
<healthMonitoring Enabled="true|false" heartBeatInterval="intervalo de tiempo">
<modosbúfer>... </modosbúfer>
<proveedores>... </proveedores>
<asignaciones de eventos>... </asignaciones de eventos>
<perfiles>... </perfiles>
<reglas>... </reglas>
</healthMonitoring>
Si observa el elemento <healthMonitoring>, puede determinar si puede establecer que el atributo sea válido o no válido, y también puede especificar el intervalo de tiempo para que se active WebHeaderBeatEvent. HealthMonitoring tiene 5 hijos.
bufferModes, donde puede definir el tamaño del búfer de un proveedor.
Proveedores, aquí se describen los Proveedores que manejan el evento.
eventMappings, aquí puede dibujar nombres de eventos relacionados con tipos de eventos amigables.
perfiles, donde se define una colección de conjuntos de parámetros que se pueden utilizar para configurar eventos.
reglas, dibuje el gráfico de eventos de Proveedores aquí.
Puede leer más sobre estos elementos en la documentación de VS 2550.
Antes de continuar, aquí hay una lista de algunos de los proveedores en ASP.NET:
System.Web.Management.MailWebEventProvider
System.Web.Management.SimpleMailWebEventProvider
System.Web.Management.TemplatedMailWebEventProvider
System.Web.Management.TraceWebEventProvider
System.Web.Management.EventLogWebEventProvider
System.Web.Management.SqlWebEventProvider
System.Web.Management.WmiWebEventProvider
no necesita explicarlos, los nombres nos dicen lo que hacen. También mencione que SqlWebEventProvider depende del servidor Sql para funcionar, que almacena eventos en la tabla aspnet_Web_Event. Para poder instalar esta base de datos se debe ejecutar el asistente aspnet_regsql.exe ubicado en la carpeta framework.
Ahora, configure el programa para que tenga un error de inicio de sesión para el proveedor del servidor Sql y genere un error al enviar un correo electrónico.
El siguiente es un ejemplo del uso de SqlWebEventProvider y SimpleMailWebEventProvider para almacenar eventos de error.
<monitoreodesalud habilitado="true" heartBeatInterval="0">
<modos de búfer>
<add name="Notificación crítica" maxBufferSize="100" maxFlushSize="20"urgentFlushThreshold="1" regularFlushInterval="Infinito" urgenteFlushInterval="00:01:00" maxBufferThreads="1"/> <
add name="Análisis " maxBufferSize="1000" maxFlushSize="100" urgenteFlushThreshold="100"
regularFlushInterval="00:05:00" urgenteFlushInterval="00:01:00" maxBufferThreads="1"/>
</bufferModes>
<proveedores>
<add name="CriticalMailEventProvider" type="System.Web.Management.SimpleMailWebEventProvider, System.Web..." [email protected] [email protected] prioridad="High" bodyHeader=" ¡Advertencia!"
bodyFooter="Investigue lo antes posible." sujetoPrefix="Acción requerida." buffer="true" bufferMode="Notificación crítica" maxEventLength="4096" maxSize="4096" maxMessagesPerNotification="1"/>
<add name="SqlWebEventProvider" tipo="System.Web.Management.SqlWebEventProvider, System.Web ..."
ConnectionStringName="LocalSqlServer" maxEventDetailsLength="1073741823" buffer="true"
bufferMode="Análisis"/>
</providers>
<eventMappings>
<add name="Todos los errores" type="System.Web.Management.WebBaseErrorEvent, System.Web ..."/>
<add name="Errores de procesamiento de solicitudes" type="System.Web.Management.WebRequestErrorEvent, System.Web .../>
</eventMappings>
<profiles>
<add name="Default" minInstances="1" maxLimit=" Infinito" minInterval="00:10:00"/>
</profiles>
<reglas>
<add name="Todos los errores predeterminados" eventName="Todos los errores" proveedor="SqlWebEventProvider" perfil="Predeterminado"
minInterval="00:00:30"/>
<add name="Errores de procesamiento de solicitudes" eventName="Errores de procesamiento de solicitudes" proveedor="CriticalMailEventProvider" perfil="Default"/>
</rules>
</healthMonitoring>
En este ejemplo En, utilice el proveedor Sql para registrar todos los eventos de error y utilice el proveedor de correo para enviar un mensaje cuando se active el evento de error de solicitud web.
A continuación se muestran algunos eventos publicados con ASP .NET 2.0:
System.Web.Management.WebBaseEvent
System.Web.Management.WebHeartBeatEvent
System.Web.Management.WebApplicationLifetimeEvent
System.Web.Management.WebRequestEvent
System.Web.Management.WebBaseErrorEvent
System.Web.Management.WebErrorEvent
System.Web.Management.WebRequestErrorEvent
System.Web.Management.WebAuditEvent
System.Web.Management.WebFailureAuditEvent
System.Web.Management.WebSuccessAuditEvent
System.Web.Management.WebManagementEvent
System.Web.Management.WebViewStateFailureAuditEvent
System.Web.Management.WebAuthenticationFailureAuditEvent
System.Web.Management.WebAuthenticationSuccessAuditEvent
puede utilizar estos eventos para perfilar un proveedor. También puedes crear tus propios eventos heredados de la clase WebBaseEvent.
Para activar automáticamente un evento, puede utilizar el método de activación de la clase WebBaseEvent:
intente
{
//....
}
captura (Excepción e)
{
si (HealthMonitoringManager.Enabled)
{
WebBaseEvent.Raise(new WebErrorEvent("Mi mensaje de error", nulo, 5000, e));
}
}
o:
si (HealthMonitoringManager.Enabled)
{
Evento WebErrorEvent = new WebErrorEvent("Mi mensaje de error", null, 5000, e);
evento.Raise();
}