In ASP.NET 2.0 können Ereignisse mithilfe des HealthMonitoring-Attributs überwacht werden. Das Attribut „healthMonitoring“ ist ein methodenbasierter Anbieter, mit dem Sie Ihren eigenen Anbieter erstellen können. Mit dem Attribut „healthMonitoring“ können wir Fehler, erfolgreiche Ereignisse usw. für verschiedene Datenquellen wie Ereignisprotokolle, SQL Server aufzeichnen und sogar unsere eigenen Anbieter erstellen, indem wir die Klasse „WebEventProvider“ erben. In diesem Artikel werde ich durch die Konfiguration einer Webanwendung gehen, die SqlServer-Fehler erkennt und eine E-Mail an die E-Mail-Adresse einer anderen Person sendet. Schauen Sie sich zunächst das Programmfragment „healthMonitoring“ in web.config an, in dem Sie die Ereignisse erstellen können, die Sie verwenden möchten.
<healthMonitoring Enabled="true|false" heartBeatInterval="Zeitintervall">
<bufferModes>... </bufferModes>
<providers>... </providers>
<eventMappings>... </eventMappings>
<profiles>... </profiles>
<rules>... </rules>
</healthMonitoring>
Wenn Sie sich das Element <healthMonitoring> ansehen, können Sie feststellen, ob Sie das Attribut auf gültig oder ungültig setzen können, und Sie können auch das Zeitintervall angeben, in dem WebHeaderBeatEvent aktiviert wird. healthMonitoring hat 5 Kinder.
bufferModes, wo Sie die Puffergröße eines Providers definieren können.
Anbieter: Hier werden die Anbieter beschrieben, die das Ereignis abwickeln.
eventMappings, hier können Sie Ereignisnamen zeichnen, die sich auf benutzerfreundliche Ereignistypen beziehen.
Profile, in denen Sie eine Sammlung von Parametersätzen definieren, die zum Konfigurieren von Ereignissen verwendet werden können.
Regeln, zeichnen Sie hier den Ereignisgraphen der Anbieter.
Weitere Informationen zu diesen Elementen finden Sie in der VS 2550-Dokumentation.
Bevor Sie fortfahren, finden Sie hier eine Liste einiger Anbieter in 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
muss diese nicht erklären, die Namen sagen uns, was sie tun. Erwähnen Sie auch, dass SqlWebEventProvider zum Funktionieren auf den SQL-Server angewiesen ist, der Ereignisse in der Tabelle aspnet_Web_Event speichert. Um diese Datenbank zu installieren, muss der Assistent aspnet_regsql.exe ausgeführt werden, der sich im Framework-Ordner befindet.
Konfigurieren Sie nun das Programm so, dass beim SQL-Server-Anbieter ein Anmeldefehler auftritt und beim Senden einer E-Mail ein Fehler generiert wird.
Im Folgenden finden Sie ein Beispiel für die Verwendung von SqlWebEventProvider und SimpleMailWebEventProvider zum Speichern von Fehlerereignissen.
<healthMonitoring aktiviert="true" heartBeatInterval="0">
<bufferModes>
<add name="Kritische Benachrichtigung" maxBufferSize="100" maxFlushSize="20"urgentFlushThreshold="1" regularFlushInterval="Infinite" dringendFlushInterval="00:01:00" maxBufferThreads="1"/> <
add name="Analysis " maxBufferSize="1000" maxFlushSize="100" strictFlushThreshold="100"
reguläreFlushInterval="00:05:00" dringendFlushInterval="00:01:00" maxBufferThreads="1"/>
</bufferModes>
<providers>
<add name="CriticalMailEventProvider" type="System.Web.Management.SimpleMailWebEventProvider, System.Web ..." [email protected] [email protected] Priority="High" bodyHeader=" Warnung!"
bodyFooter="Bitte untersuchen Sie so schnell wie möglich." subjectPrefix="Aktion erforderlich." buffer="true" bufferMode="Critical Notification" maxEventLength="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="Anforderungsverarbeitungsfehler" type="System.Web.Management.WebRequestErrorEvent, System.Web .../>
</eventMappings>
<profiles>
<add name="Default" minInstances="1" maxLimit=" Unendlich" minInterval="00:10:00"/>
</profiles>
<rules>
<add name="Alle Fehler Standard" eventName="Alle Fehler" Anbieter="SqlWebEventProvider" Profil="Standard"
minInterval="00:00:30"/>
<add name="Anfrageverarbeitungsfehler" eventName="Anfrageverarbeitungsfehler"provider="CriticalMailEventProvider" profile="Default"/>
</rules>
</healthMonitoring>
In diesem Beispiel Verwenden Sie in , den SQL-Anbieter, um alle Fehlerereignisse aufzuzeichnen, und verwenden Sie den E-Mail-Anbieter, um eine Nachricht zu senden, wenn das Webanforderungsfehlerereignis aktiviert wird.
Hier sind einige mit ASP .NET 2.0 veröffentlichte Ereignisse:
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
kann diese Ereignisse verwenden, um ein Profil eines Anbieters zu erstellen. Sie können auch Ihre eigenen Ereignisse erstellen, die von der WebBaseEvent-Klasse geerbt werden.
Um ein Ereignis automatisch zu aktivieren, können Sie die Wakeup-Methode der WebBaseEvent-Klasse verwenden:
try
{
//....
}
Catch(Ausnahme e)
{
if (HealthMonitoringManager.Enabled)
{
WebBaseEvent.Raise(new WebErrorEvent("Meine Fehlermeldung", null, 5000, e));
}
}
oder:
if (HealthMonitoringManager.Enabled)
{
WebErrorEvent event = new WebErrorEvent("Meine Fehlermeldung", null, 5000, e);
event.Raise();
}