ASP.NET中用healthMonitor属性用法

在ASP.NET 2.0中,可以使用healthMonitoring属性监测事件。healthMonitoring属性是一个基于方法的provider,在这里可以构造自己的provider。利用healthMonitoring属性,我们可以诸如记录错语、成功的事件等,对不同的数据源,如事件日志,Sql Server甚至对于自己通过继承WebEventProvider类创建自己的providers。在此文章中,我打算介绍配置一个监测SqlServer错语的并且对某人的电子信箱地址发送邮件的web应用程序。首先,看一下在web.config中的healthMonitoring程序片段,在此可以建立将要用到的事件。

1<healthmonitoring enabled="true|false" heartbeatinterval="time interval">
2<buffermodes>... </buffermodes>
3<providers>... </providers>
4<eventmappings>... </eventmappings>
5<profiles>... </profiles>
6<rules>... </rules>
7</healthmonitoring>

如果看一下

 1<healthmonitoring>元素,就可以判断是否可以将设置属性为有效或无效,也可以指定对WebHeaderBeatEvent被唤醒的时间间隔。healthMonitoring有5个孩子。 
 2
 3bufferModes,在此可以定义一个Provider的缓冲区大小。 
 4
 5Providers,在此说明处理事件的Providers。 
 6
 7eventMappings, 在此可以画出与友好事件类型相关的事件名称。 
 8
 9profiles, 在此定义一个可以用来配置事件的参数集集合。 
10
11rules, 在此画出Providers的事件图。 
12
13可以阅读更多含在VS 2550文档中的关于这些元素的东西。 
14
15在继续之前,这里有一份含ASP.NET中的一些Providers清单: 
16
17System.Web.Management.MailWebEventProvider   
18System.Web.Management.SimpleMailWebEventProvider   
19System.Web.Management.TemplatedMailWebEventProvider   
20System.Web.Management.TraceWebEventProvider   
21System.Web.Management.EventLogWebEventProvider   
22System.Web.Management.SqlWebEventProvider   
23System.Web.Management.WmiWebEventProvider 
24
25不需要解释这些,名字告诉我们它们是干什么的。还要提一下SqlWebEventProvider依靠Sql server而工作,它将事件存储在aspnet_Web_Event表。为了安装此数据库,必须运行位于framework文件夹中的aspnet_regsql.exe向导。 
26
27现在,配置对Sql server provider有登录错语并且发送一个电子邮件而产生错误的程序。 
28
29下面是一个使用SqlWebEventProvider和SimpleMailWebEventProvider来存错语事件的例子。 
30
31<healthmonitoring enabled="true" heartbeatinterval="0">
32<buffermodes>
33<add maxbuffersize="100" maxbufferthreads="1" maxflushsize="20" name="Critical Notification" regularflushinterval="Infinite" urgentflushinterval="00:01:00" urgentflushthreshold="1"></add>
34<add maxbuffersize="1000" maxbufferthreads="1" maxflushsize="100" name="Analysis" regularflushinterval="00:05:00" urgentflushinterval="00:01:00" urgentflushthreshold="100"></add>
35</buffermodes>
36<providers>
37<add bodyfooter="Please investigate ASAP." bodyheader="Warning!" buffer="true" buffermode="Critical Notification" from="[email protected]" maxeventlength="4096" maxmessagespernotification="1" maxsize="4096" name="CriticalMailEventProvider" priority="High" subjectprefix="Action required." to="[email protected]" type="System.Web.Management.SimpleMailWebEventProvider, System.Web ..."></add>
38<add buffer="true" buffermode="Analysis" connectionstringname="LocalSqlServer" maxeventdetailslength="1073741823" name="SqlWebEventProvider" type="System.Web.Management.SqlWebEventProvider, System.Web ..."></add>
39</providers>
40<eventmappings>
41<add name="All Errors" type="System.Web.Management.WebBaseErrorEvent, System.Web ..."></add>
42<add default"="" maxlimit="Infinite" mininstances="1" mininterval="00:10:00" name="Request Processing Errors" type="System.Web.Management.WebRequestErrorEvent, System.Web .../&gt;
43
44&lt;/eventMappings&gt;
45
46&lt;profiles&gt;
47
48&lt;add name="></add>
49
50<rules>
51<add eventname="All Errors" mininterval="00:00:30" name="All Errors Default" profile="Default" provider="SqlWebEventProvider"></add>
52<add eventname="Request Processing Errors" name="Request Processing Errors" profile="Default" provider="CriticalMailEventProvider"></add>
53</rules>
54</eventmappings></healthmonitoring>
55
56在此例子中,使用Sql provider来记录所有错语事件,并且当Web请求错误事件被唤醒时使用mail provider来发送一个消息。 
57
58这里有一些ASP .NET 2.0一起发布的事件: 
59
60System.Web.Management.WebBaseEvent   
61System.Web.Management.WebHeartBeatEvent   
62System.Web.Management.WebApplicationLifetimeEvent   
63System.Web.Management.WebRequestEvent   
64System.Web.Management.WebBaseErrorEvent   
65System.Web.Management.WebErrorEvent   
66System.Web.Management.WebRequestErrorEvent   
67System.Web.Management.WebAuditEvent   
68System.Web.Management.WebFailureAuditEvent   
69System.Web.Management.WebSuccessAuditEvent   
70System.Web.Management.WebManagementEvent   
71System.Web.Management.WebViewStateFailureAuditEvent   
72System.Web.Management.WebAuthenticationFailureAuditEvent   
73System.Web.Management.WebAuthenticationSuccessAuditEvent 
74
75可以使用这些事件来对一个provider画图。也可以创建通过WebBaseEvent类继承来的自己的事件。 
76
77为自动唤醒一个事件,可以使用WebBaseEvent类的唤醒方法: 
78
79try   
80{   
81//....   
82} 
83
84catch(Exception e)   
85{   
86if (HealthMonitoringManager.Enabled)   
87{   
88WebBaseEvent.Raise(new WebErrorEvent("My Error message", null, 5000, e));   
89}   
90} 
91
92or: 
93
94if (HealthMonitoringManager.Enabled)   
95{   
96WebErrorEvent event = new WebErrorEvent("My error message", null, 5000, e);   
97event.Raise();   
98}</healthmonitoring>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus