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

<healthMonitoring Enabled="true|false" heartBeatInterval="time interval"> <bufferModes>... </bufferModes> <providers>... </providers> <eventMappings>... </eventMappings> <profiles>... </profiles> <rules>... </rules></healthMonitoring>

  如果看一下<healthMonitoring>元素,就可以判断是否可以将设置属性为有效或无效,也可以指定对WebHeaderBeatEvent被唤醒的时间间隔。healthMonitoring有5个孩子。

  bufferModes,在此可以定义一个Provider的缓冲区大小。

  Providers,在此说明处理事件的Providers。

  eventMappings, 在此可以画出与友好事件类型相关的事件名称。

  profiles, 在此定义一个可以用来配置事件的参数集集合。

  rules, 在此画出Providers的事件图。

  可以阅读更多含在VS 2550文档中的关于这些元素的东西。

  在继续之前,这里有一份含ASP.NET中的一些Providers清单:

System.Web.Management.MailWebEventProviderSystem.Web.Management.SimpleMailWebEventProviderSystem.Web.Management.TemplatedMailWebEventProviderSystem.Web.Management.TraceWebEventProviderSystem.Web.Management.EventLogWebEventProviderSystem.Web.Management.SqlWebEventProviderSystem.Web.Management.WmiWebEventProvider

  不需要解释这些,名字告诉我们它们是干什么的。还要提一下SqlWebEventProvider依靠Sql server而工作,它将事件存储在aspnet_Web_Event表。为了安装此数据库,必须运行位于framework文件夹中的aspnet_regsql.exe向导。

  现在,配置对Sql server provider有登录错语并且发送一个电子邮件而产生错误的程序。

  下面是一个使用SqlWebEventProvider和SimpleMailWebEventProvider来存错语事件的例子。

<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>

  在此例子中,使用Sql provider来记录所有错语事件,并且当Web请求错误事件被唤醒时使用mail provider来发送一个消息。

  这里有一些ASP .NET 2.0一起发布的事件:

System.Web.Management.WebBaseEventSystem.Web.Management.WebHeartBeatEventSystem.Web.Management.WebApplicationLifetimeEventSystem.Web.Management.WebRequestEventSystem.Web.Management.WebBaseErrorEventSystem.Web.Management.WebErrorEventSystem.Web.Management.WebRequestErrorEventSystem.Web.Management.WebAuditEventSystem.Web.Management.WebFailureAuditEventSystem.Web.Management.WebSuccessAuditEventSystem.Web.Management.WebManagementEventSystem.Web.Management.WebViewStateFailureAuditEventSystem.Web.Management.WebAuthenticationFailureAuditEventSystem.Web.Management.WebAuthenticationSuccessAuditEvent

  可以使用这些事件来对一个provider画图。也可以创建通过WebBaseEvent类继承来的自己的事件。

  为自动唤醒一个事件,可以使用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();}

更多相关文章

  1. C#中如何监控类属性更改的代码案例分享
  2. Asp.NET页面事件加载的顺序是什么样的
  3. C#如何通过对象属性名修改值的实例
  4. 疑惑解答: CSS中背景图片的background-position属性问题
  5. c#如何在程序中定义和使用自定义事件
  6. textbox控件属性有哪些
  7. php 修改、增加xml结点属性的实现代码
  8. php操作xml入门之xml标签的属性分析
  9. XML指南——XML 属性

随机推荐

  1. Android 打开Activity后,不显示键盘
  2. Android几款著名的ActiveSync客户端
  3. android 在SD卡创建文件夹
  4. Android 通信录中的联系人操作
  5. Android SDK Tools R15 发布
  6. android 复制、粘贴文字
  7. android 新手学习笔记 点击事件
  8. Spinner下拉位置处理
  9. JAVA设计模式之Template method
  10. 教你如何用最新的技术快速开发一个完整的