Dans ASP.NET 2.0, vous pouvez utiliser l'attribut healthMonitoring pour surveiller l' événement . 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="time interval"> <bufferModes>... </bufferModes> <providers>... </providers> <eventMappings>... </eventMappings> <profiles>... </profiles> <rules>... </rules> </healthMonitoring>
Si vous examinez l'élément
bufferModes, où vous pouvez définir la taille du tampon d'un fournisseur.
Fournisseurs, décrit ici les fournisseurs qui gèrent les événements.
EventMappings, ici vous pouvez dessiner des noms d'événements liés aux types d'événements amicaux.
Profils, définissent ici une collection d'ensembles de paramètres qui peuvent être utilisés pour configurer des événements.
Règles, dessinez ici le diagramme 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 quelques 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
Il n'est pas nécessaire 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 avoir une erreur de connexion pour le fournisseur de serveur SQL et générer une erreur lors de l'envoi d'un e-mail.
Ce qui suit est un exemple d'utilisation de SqlWebEventProvider et SimpleMailWebEventProvider pour stocker des événements contenant des fautes d'orthographe.
<healthMonitoring enabled="true" heartBeatInterval="0"><bufferModes><add name="Critical Notification" maxBufferSize="100" maxFlushSize="20"urgentFlushThreshold="1" regularFlushInterval="Infinite" urgentFlushInterval="00:01:00" maxBufferThreads="1"/> <add name="Analysis" 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 ..." from=info@nsquared2.net to=fnormen@hotmail.com priority="High" bodyHeader="Warning!"bodyFooter="Please investigate ASAP." subjectPrefix="Action required." 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="All Errors" 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="Infinite" minInterval="00:10:00"/> </profiles> <rules> <add name="All Errors Default" eventName="All Errors" provider="SqlWebEventProvider" profile="Default"minInterval="00:00:30"/> <add name="Request Processing Errors" eventName="Request Processing Errors" provider="CriticalMailEventProvider" profile="Default"/> </rules> </healthMonitoring>
Dans cet exemple, le fournisseur SQL est utilisé pour enregistrer tous les événements d'erreur, et le fournisseur de messagerie est utilisé 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
Vous pouvez utiliser ces événements pour dessiner des images d'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 :
try { //.... }
catch(Exception e){ if (HealthMonitoringManager.Enabled) { WebBaseEvent.Raise(new WebErrorEvent("My Error message", null, 5000, e)); }} or: if (HealthMonitoringManager.Enabled){ WebErrorEvent event = new WebErrorEvent("My error message", null, 5000, e); event.Raise();}
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!