在ASP
NET
中
可以使用healthMonitoring屬性監測事件
healthMonitoring屬性是一個基於方法的provider
在這裡可以構造自己的provider
利用healthMonitoring屬性
我們可以諸如記錄錯語
成功的事件等
對不同的數據源
如事件日志
Sql Server甚至對於自己通過繼承WebEventProvider類創建自己的providers
在此文章中
我打算介紹配置一個監測SqlServer錯語的並且對某人的電子信箱地址發送郵件的web應用程序
首先
看一下在nfig中的healthMonitoring程序片段
在此可以建立將要用到的事件
<healthMonitoring Enabled=
true|false
heartBeatInterval=
time interval
>
<bufferModes>
</bufferModes>
<providers>
</providers>
<eventMappings>
</eventMappings>
<profiles>
</profiles>
<rules>
</rules>
</healthMonitoring>
如果看一下<healthMonitoring>元素
就可以判斷是否可以將設置屬性為有效或無效
也可以指定對WebHeaderBeatEvent被喚醒的時間間隔
healthMonitoring有
個孩子
bufferModes
在此可以定義一個Provider的緩沖區大小
Providers
在此說明處理事件的Providers
eventMappings
在此可以畫出與友好事件類型相關的事件名稱
profiles
在此定義一個可以用來配置事件的參數集集合
rules
在此畫出Providers的事件圖
可以閱讀更多含在VS
文檔中的關於這些元素的東西
在繼續之前
這裡有一份含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=
>
<bufferModes>
<add name=
Critical Notification
maxBufferSize=
maxFlushSize=
urgentFlushThreshold=
regularFlushInterval=
Infinite
urgentFlushInterval=
:
:
maxBufferThreads=
/>
<add name=
Analysis
maxBufferSize=
maxFlushSize=
urgentFlushThreshold=
regularFlushInterval=
:
:
urgentFlushInterval=
:
:
maxBufferThreads=
/>
</bufferModes>
<providers>
<add name=
CriticalMailEventProvider
type=
System
Web
Management
SimpleMailWebEventProvider
System
Web
from= to= priority=
High
bodyHeader=
Warning!
bodyFooter=
Please investigate ASAP
subjectPrefix=
Action required
buffer=
true
bufferMode=
Critical Notification
maxEventLength=
maxSize=
maxMessagesPerNotification=
/>
<add name=
SqlWebEventProvider
type=
System
Web
Management
SqlWebEventProvider
System
Web
connectionStringName=
LocalSqlServer
maxEventDetailsLength=
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=
maxLimit=
Infinite
minInterval=
:
:
/>
</profiles>
<rules>
<add name=
All Errors Default
eventName=
All Errors
provider=
SqlWebEventProvider
profile=
Default
minInterval=
:
:
/>
<add name=
Request Processing Errors
eventName=
Request Processing Errors
provider=
CriticalMailEventProvider
profile=
Default
/>
</rules>
</healthMonitoring>
在此例子中
使用Sql provider來記錄所有錯語事件
並且當Web請求錯誤事件被喚醒時使用mail provider來發送一個消息
這裡有一些ASP
NET
一起發布的事件
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
e));
}
}
or:
if (HealthMonitoringManager
Enabled)
{
WebErrorEvent event = new WebErrorEvent(
My error message
null
e);
event
Raise();
}
From:http://tw.wingwit.com/Article/program/ASP/201311/21823.html