ASP.NET项目开发中健康监视浅析

开发 后端
ASP.NET项目开发中健康监视向你介绍了什么是ASP.NET项目开发中的健康监视,以及ASP.NET项目开发中健康监视是如何实现的。

健康监视(Health Monitoring),Health Monitoring是ASP.NET2.0以后版本添加的新的特性。它可以允许开发人员监视应用程序中发生的异常的事件。而且监视应用程序的启动,关闭,验证等都有相对应的事件来监视。而且我们还可以创建自定义的事件来监视应用程序中的特定的部分。我们也可以在Health Monitoring中配置把应用程序中的异常是记录在系统的日志中还是Sql Server中,或者是以Email形式发送出去。最重要的一点就是:只要通过配置,我们可以少写,甚至不写代码就可以实现强大的异常处理策略(和类似Enterprise Application Blocks,我们后面会提到的)。

同样,我们还是在web.config中添加配置,在system.web节点中添加﹤healthMonitoring /﹥节点:

默认情况下是禁用的,我们启用就应该如下:

ASP.NET项目开发中健康监视Code1

  1. ﹤healthMonitoring enabled=”true﹥  
  2.   ﹤eventMappings﹥﹤/eventMappings﹥  
  3.   ﹤providers﹥﹤/providers﹥  
  4.   ﹤rules﹥..﹤/rules﹥  
  5.   ﹤profiles﹥..﹤/profiles﹥  
  6.   ﹤bufferModes﹥..﹤/bufferModes﹥  
  7.  ﹤/healthMonitoring﹥ 

下面就看看该节点下的一些配置:

eventMappings节点通过指定事件类型来注册事件类。也就说,要注明我们在应用程序中要监听哪些事件,如下配置:

  1. ﹤eventMappings﹥  
  2.   ﹤clear /﹥  
  3.   ﹤add name=”CustomException” type=”System.Web.Management.WebBaseErrorEvent” /﹥  
  4.  ﹤/eventMappings﹥ 

前面的"name"属性是我们自己为后面的事件取的友好的名称,从﹤eventMappings﹥的字面意思也可以知道:事件的映射。

后面的"type"就是我们要在程序中监听的事件。之前也说过,我们可以监听很多的事件:系统的启动,关闭,验证失败等。

如上所见:"System.Web.Management.WebBaseErrorEvent" 是所有事件的基类。它的子类有很多:

WebApplicationLifetimeEvent--在应用程序的运行过程触发的事情,如,当应用程序开启,关闭时

WebAuthenticationFailureAuditEvent--当ASP.NET验证失败是触发

WebAuthenticationSuccessAuditEvent--验证成功时触发

WebRequestErrorEvent--请求出错时触发

除此之外,我们还可以自定义一些类,派生自基类。

当我们确定了要监听的事件之后,我们就要选择事件的provider,也就说,事件触发后,我们把事情的信息记录到那里。
配置如下:

  1. ﹤providers﹥  
  2.  ﹤clear /﹥  
  3.  ﹤add name=”EventLogProvider” type=”System.Web.Management.EventLogWebEventProvider” /﹥  
  4. ﹤/providers﹥ 

这之前一样:System.Web.Management.EventLogWebEventProvider是个基类,有很多的子类,这些子类可以使得我们把异常的记录在如sql数据库中,系统日志中等:

SqlWebEventProvider--把异常信息记录到数据库中的提供程序

SimpleMailEventProvider--把异常信息通过Email发送的提供程序

还有一些,大家参看MSDN。

好了,到这里,我们把要监听的事件选择好了,如要监听WebApplicationLifetimeEvent,WebRequestErrorEvent;而且我们也准备把异常系统通过Email发送,我们选择了SimpleMailEventProvider,通过也想把异常记录到数据库中,我们也选择了SqlWebEventProvider。那么我们的配置就如下:

ASP.NET项目开发中健康监视Code2

  1. ﹤healthMonitoring enabled=”true﹥  
  2.   ﹤eventMappings﹥  
  3.    ﹤clear /﹥  
  4.    ﹤add name=”CustomException” type=”System.Web.Management.WebApplicationLifetimeEvent” /﹥  
  5.    ﹤add name=”AnotherException" type=”System.Web.Management.WebRequestErrorEvent” /﹥  
  6.   ﹤/eventMappings﹥  
  7.  
  8.   ﹤providers﹥  
  9.    ﹤clear /﹥  
  10.    ﹤add name=”EmailProvider” type=”System.Web.Management.SimpleMailEventProvider” /﹥  
  11.    ﹤add name=”SqlProvider” type=”System.Web.Management.WebRequestErrorEvent” /﹥  
  12.   ﹤/providers﹥  
  13.     
  14.  ﹤/healthMonitoring﹥ 

注意:providers节点中的"name"属性也是我们自己取的友好的名称。

好了,该定义的定义好了,现在还是不能按照我们的要求工作,那是因为我们还缺少一个"规则":
如下:

ASP.NET项目开发中健康监视Code3

  1. ﹤rules﹥  
  2.   ﹤clear /﹥  
  3.   ﹤add name=”Unhandled Exceptions Rule”  
  4.    eventName=”Unhandled Exceptions”  
  5.    provider=”EventLogProvider”  
  6.    profile=”Default”  
  7.    minInstances=”1”  
  8.    maxLimit=”Infinite”  
  9.    minInterval=”00:00:00” /﹥  
  10.  ﹤/rules﹥ 

实际上,rules就是把我们之前定义的要监听的事件和相应的provider对象上来:

  1. ﹤rules﹥  
  2.  ﹤clear /﹥  
  3.  ﹤add name=”MyRules1”  
  4.   eventName=”CustomException”  
  5.   provider=”EmailProvider”  
  6.   profile=”Default”  
  7.   minInstances=”1”  
  8.   maxLimit=”Infinite”  
  9.   minInterval=”00:00:00” /﹥  
  10. ﹤/rules﹥ 

注意上面的name属性,其实和之前一样,我们是给这个规则取个名字而已。eventName就是之前我们定义的事件名称,如"CustomException",provider为之前定义的“EmailProvider” ,本条规则就是说,让EmailProvider来处理CustomException的异常信息。其他的同理。

***一点要注意的就是:如果我们决定发送Email,那么我们还要配置节点: 

  1. ﹤system.net﹥  
  2.   ﹤mailSettings﹥  
  3.    ﹤smtp deliveryMethod=”PickupDirectoryFromIis”﹥  
  4.     ﹤network defaultCredentials=”true” host=”127.0.0.1” /﹥  
  5.    ﹤/smtp﹥  
  6.   ﹤/mailSettings﹥  
  7.  ﹤/system.net﹥ 

这样就行了。

ASP.NET项目开发中健康监视的基本信息就向你介绍到这里,希望这样的介绍对你理解ASP.NET项目开发中健康监视有所帮助。

【编辑推荐】

  1. ASP.NET Request对象使用实例浅析
  2. ASP.NET(VB)应用之图片增加水印文字浅析
  3. ASP.NET页面框架概念浅析
  4. ASP.NET项目开发中应用程序异常处理浅析
  5. ASP.NET项目开发中常见异常处理及web.config配置浅析
责任编辑:仲衡 来源: cnblogs
相关推荐

2009-07-29 17:20:18

应用程序异常

2009-08-07 15:24:16

ASP.NET模板控件

2009-08-10 18:24:29

ASP.NET开发环境

2009-07-31 12:43:59

ASP.NET MVC

2009-08-05 15:50:13

ASP.NET优点

2009-08-07 15:34:15

ASP.NET数据绑定

2009-07-24 13:41:15

ASP.NET AJA

2009-08-05 18:36:12

ASP.NET Che

2009-08-10 13:32:15

ASP.NET TimASP.NET组件设计

2009-07-21 10:05:10

ASP.NET配置文件

2009-07-22 14:23:39

URL RewriteASP.NET

2009-08-21 17:11:15

ASP.NET异步回调

2009-07-28 09:32:41

ASP.NET自定义控

2009-07-28 16:40:11

ASP.NET异步页面

2009-08-05 14:46:17

ASP.NET url

2009-07-23 14:31:20

ASP.NET MVC

2009-08-04 17:00:09

ASP.NET禁用Vi

2009-07-20 16:23:01

ASP.NET授权模块

2009-07-28 15:53:43

ASP.NET Web

2009-07-27 10:18:12

TypeResolveASP.NET
点赞
收藏

51CTO技术栈公众号