ASP.NET中用healthMonitor屬性用法
2024-07-10 13:04:58
供稿:網(wǎng)友
在asp.net 2.0中,可以使用healthmonitoring屬性監(jiān)測事件。healthmonitoring屬性是一個(gè)基于方法的provider,在這里可以構(gòu)造自己的provider。利用healthmonitoring屬性,我們可以諸如記錄錯(cuò)語、成功的事件等,對不同的數(shù)據(jù)源,如事件日志,sql server甚至對于自己通過繼承webeventprovider類創(chuàng)建自己的providers。在此文章中,我打算介紹配置一個(gè)監(jiān)測sqlserver錯(cuò)語的并且對某人的電子信箱地址發(fā)送郵件的web應(yīng)用程序。首先,看一下在web.config中的healthmonitoring程序片段,在此可以建立將要用到的事件。
<healthmonitoring enabled="true|false" heartbeatinterval="time interval">
<buffermodes>... </buffermodes>
<providers>... </providers>
<eventmappings>... </eventmappings>
<profiles>... </profiles>
<rules>... </rules>
</healthmonitoring>
如果看一下<healthmonitoring>元素,就可以判斷是否可以將設(shè)置屬性為有效或無效,也可以指定對webheaderbeatevent被喚醒的時(shí)間間隔。healthmonitoring有5個(gè)孩子。
buffermodes,在此可以定義一個(gè)provider的緩沖區(qū)大小。
providers,在此說明處理事件的providers。
eventmappings, 在此可以畫出與友好事件類型相關(guān)的事件名稱。
profiles, 在此定義一個(gè)可以用來配置事件的參數(shù)集集合。
rules, 在此畫出providers的事件圖。
可以閱讀更多含在vs 2550文檔中的關(guān)于這些元素的東西。
在繼續(xù)之前,這里有一份含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表。為了安裝此數(shù)據(jù)庫,必須運(yùn)行位于framework文件夾中的aspnet_regsql.exe向?qū)А?br>
現(xiàn)在,配置對sql server provider有登錄錯(cuò)語并且發(fā)送一個(gè)電子郵件而產(chǎn)生錯(cuò)誤的程序。
下面是一個(gè)使用sqlwebeventprovider和simplemailwebeventprovider來存錯(cuò)語事件的例子。
<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 ..." [email protected] [email protected] 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來記錄所有錯(cuò)語事件,并且當(dāng)web請求錯(cuò)誤事件被喚醒時(shí)使用mail provider來發(fā)送一個(gè)消息。
這里有一些asp .net 2.0一起發(fā)布的事件:
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
可以使用這些事件來對一個(gè)provider畫圖。也可以創(chuàng)建通過webbaseevent類繼承來的自己的事件。
為自動(dòng)喚醒一個(gè)事件,可以使用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();
}
本文來源于網(wǎng)頁設(shè)計(jì)愛好者web開發(fā)社區(qū)http://www.html.org.cn收集整理,歡迎訪問。