快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

ASP.NET中用healthMonitor属性用法

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

  不需要解释这些,名字告诉我们它们是干什么的。还要提一下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.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

  可以使用这些事件来对一个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();
}


返回类别: 教程
上一教程: 学习使用.NET IO流.
下一教程: 用asp.net和xml做的新闻更新系统(1)

您可以阅读与"ASP.NET中用healthMonitor属性用法"相关的教程:
· ASP.NET程序中用Repeater实现分页
· 在ASP.NET中上传图片并生成缩略图的C#源码
· 细细品味ASP.NET(四)
· 细细品味ASP.NET(三)
· 在ASP.NET中使用.NET组件
    微笑服务 优质保证 索取样品