原文地址:http://aspnet.4guysfromrolla.com/articles/031407-1.aspx
介绍
在之前的文章中(译者注:ASP.NET 2.0中的健康监测系统(Health Monitoring)(1) - 基本应用,ASP.NET 2.0中的健康监测系统(Health Monitoring)(2) - 通过Email发送监测信息),我们已经知道了ASP.NET 2.0的健康监测系统是用于监测ASP.NET应用程序的运行状况的,它可以记录事件信息到你指定的日志源中。这个健康监测系统中包括大量的预定义事件,在ASP.NET程序运行期间,会自动地触发相关的事件。 但是,有的时候我们需要通过自己的逻辑来触发某一事件, 此时,我们就应该为健康监测系统创建我们自己的自定义事件。
在本文中,我们将会看到如何创建一个自定义事件,以及如何触发这个自定义事件。 当健康监测系统的预定义事件被触发的时候,健康监测系统会通过Web.config中的配置信息来决定将详细的事件信息记录到哪个日志源中。 本文中,我们会创建一个自定义事件,使得当一个被锁定的用户试图登录的时候,将其信息记录到相关的日志源中。 继续往下看,你会知道得更多!
需要了解的知识点
ASP.NET 2.0的Membership可以让开发人员方便地开发出用户管理的功能。 更多的关于ASP.NET 2.0用户管理的相关信息,可以参考Examining ASP.NET 2.0's Membership, Roles, and Profile。 出于安全目的,如果某个用户在一段时间内登录失败的次数超出了某个值的话,Membership就会锁定该用户。 一旦某一用户被锁定了,那么他将无法再登录站点,直到管理员解锁这个帐户。参考上面推荐的那个系列文章的第4部分,其中介绍了如何记录被锁定的用户的登录情况到数据库中,以便管理员查看,管理员可以通过一个界面来集中管理被锁定的用户,同时也提供了解锁用户的功能。
我们可以加强一下上面的功能,使其可以通过健康监测系统来记录被锁定的试图登录的用户。 好了,让我们来做一些必要的配置吧,以便当相关的事件发生的时候,系统会自动地发邮件给管理员。 (参考通过Email发送监测信息(中文在这里),通过该文你可以了解更多的健康监测系统中通过邮件记录事件的相关信息。)
虽然默认情况下,ASP.NET运行时可以记录不同的验证级别的事件,但是如果用户登录失败的原因是因为该用户已被锁定的话,那么它将无法记录。 另外,它也不是健康监测系统的内置事件。 所以,请跟着我来完成如下3个任务:
1、创建一个自定义事件类(当被锁定的用户试图登录的时候将会触发它)
2、当被锁定的用户试图登录的时候触发我们第一步创建的那个事件
3、更新Web.config中与健康监测系统相关的配置,以使其可以记录自定义事件到一个或更多的数据源。
本文接下来的部分将会详细地讲解如何完成这3个步骤。 如果你还没有看过Examining ASP.NET 2.0's Membership, Roles, and Profile - Part 4,那么请马上去看一看,因为接下来会用到很多那篇文中的代码。