原文地址: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,那麼請馬上去看一看,因為接下來會用到很多那篇文中的代碼。