Dans ASP.NET 2.0, les événements peuvent être surveillés à l'aide de l'attribut healthMonitoring. L'attribut healthMonitoring est un fournisseur basé sur une méthode dans lequel vous pouvez créer votre propre fournisseur. Grâce à l'attribut healthMonitoring, nous pouvons enregistrer les erreurs, les événements réussis, etc., pour différentes sources de données, telles que les journaux d'événements, Sql Server et même créer nos propres fournisseurs en héritant de la classe WebEventProvider. Dans cet article, je vais expliquer la configuration d'une application Web qui détecte les erreurs SqlServer et envoie un e-mail à l'adresse e-mail de quelqu'un. Tout d’abord, jetez un œil au fragment du programme healthMonitoring dans web.config, où vous pouvez créer les événements que vous utiliserez.
<healthMonitoring Enabled="true|false" heartBeatInterval="intervalle de temps">
<bufferModes>... </bufferModes>
<fournisseurs>... </fournisseurs>
<eventMappings>... </eventMappings>
<profils>... </profils>
<règles>... </règles>
</healthMonitoring>
Si vous examinez l'élément <healthMonitoring>, vous pouvez déterminer si vous pouvez définir l'attribut comme étant valide ou non valide, et vous pouvez également spécifier l'intervalle de temps pendant lequel WebHeaderBeatEvent doit être réveillé. healthMonitoring a 5 enfants.
bufferModes, où vous pouvez définir la taille du tampon d'un fournisseur.
Fournisseurs, décrit ici les fournisseurs qui gèrent l'événement.
eventMappings, ici vous pouvez dessiner des noms d'événements liés à des types d'événements conviviaux.
profils, dans lesquels vous définissez un ensemble de jeux de paramètres pouvant être utilisés pour configurer des événements.
règles, dessinez ici le graphique des événements des fournisseurs.
Vous pouvez en savoir plus sur ces éléments dans la documentation VS 2550.
Avant de continuer, voici une liste de certains fournisseurs dans 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
n'a pas besoin de les expliquer, les noms nous disent ce qu'ils font. Mentionnez également que SqlWebEventProvider s'appuie sur le serveur SQL pour fonctionner, qui stocke les événements dans la table aspnet_Web_Event. Afin d'installer cette base de données, l'assistant aspnet_regsql.exe situé dans le dossier framework doit être exécuté.
Maintenant, configurez le programme pour qu'il ait une erreur de connexion pour le fournisseur de serveur SQL et générez une erreur lors de l'envoi d'un e-mail.
Voici un exemple d'utilisation de SqlWebEventProvider et SimpleMailWebEventProvider pour stocker les événements d'erreur.
<healthMonitoring activé="true" heartBeatInterval="0">
<Modestampon>
<add name="Notification critique" maxBufferSize="100" maxFlushSize="20"urgentFlushThreshold="1" regularFlushInterval="Infinite" urgentFlushInterval="00:01:00" maxBufferThreads="1"/> <
add name="Analyse " maxBufferSize="1000" maxFlushSize="100" urgentFlushThreshold="100"
regularFlushInterval="00:05:00" urgentFlushInterval="00:01:00" maxBufferThreads="1"/>
</bufferModes>
<providers>
<add name="CriticalMailEventProvider" type="System.Web.Management.SimpleMailWebEventProvider, System.Web..." [email protected] à[email protected] priorité="High" bodyHeader=" Avertissement!"
bodyFooter="Veuillez enquêter dès que possible." subjectPrefix="Action requise." buffer="true" bufferMode="Critical Notification" maxEventLength="4096" maxSize="4096" maxMessagesPerNotification="1"/>
<add name="SqlWebEventProvider" type="System.Web.Management.SqlWebEventProvider, System.Web..."
connectionStringName="LocalSqlServer" maxEventDetailsLength="1073741823" buffer="true"
bufferMode="Analysis"/>
</providers>
<eventMappings>
<add name="Toutes les erreurs" type="System.Web.Management.WebBaseErrorEvent, System.Web ..."/>
<add name="Request Processing Errors" type="System.Web.Management.WebRequestErrorEvent, System.Web .../>
</eventMappings>
<profiles>
<add name="Default" minInstances="1" maxLimit=" Infini" minInterval="00:10:00"/>
</profiles>
<rules>
<add name="Toutes les erreurs par défaut" eventName="Toutes les erreurs" supplier="SqlWebEventProvider" profile="Default"
minInterval="00:00:30"/>
<add name="Request Processing Errors" eventName="Request Processing Errors" supplier="CriticalMailEventProvider" profile="Default"/>
</rules>
</healthMonitoring>
Dans cet exemple Dans , utilisez le fournisseur SQL pour enregistrer tous les événements d'erreur et utilisez le fournisseur de messagerie pour envoyer un message lorsque l'événement d'erreur de requête Web est réveillé.
Voici quelques événements publiés avec 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
peut utiliser ces événements pour profiler un fournisseur. Vous pouvez également créer vos propres événements hérités de la classe WebBaseEvent.
Pour réveiller automatiquement un événement, vous pouvez utiliser la méthode wakeup de la classe WebBaseEvent :
essayez
{
//....
}
catch(Exception e)
{
si (HealthMonitoringManager.Enabled)
{
WebBaseEvent.Raise(new WebErrorEvent("Mon message d'erreur", null, 5000, e));
}
}
ou :
si (HealthMonitoringManager.Enabled)
{
WebErrorEvent event = new WebErrorEvent("Mon message d'erreur", null, 5000, e);
event.Raise();
}