溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ASP.NET項(xiàng)目開(kāi)發(fā)中健康監(jiān)視怎么實(shí)現(xiàn)

發(fā)布時(shí)間:2021-12-06 15:09:14 來(lái)源:億速云 閱讀:104 作者:iii 欄目:編程語(yǔ)言

這篇文章主要講解了“ASP.NET項(xiàng)目開(kāi)發(fā)中健康監(jiān)視怎么實(shí)現(xiàn)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“ASP.NET項(xiàng)目開(kāi)發(fā)中健康監(jiān)視怎么實(shí)現(xiàn)”吧!

健康監(jiān)視(Health Monitoring),Health Monitoring是ASP.NET2.0以后版本添加的新的特性。它可以允許開(kāi)發(fā)人員監(jiān)視應(yīng)用程序中發(fā)生的異常的事件。而且監(jiān)視應(yīng)用程序的啟動(dòng),關(guān)閉,驗(yàn)證等都有相對(duì)應(yīng)的事件來(lái)監(jiān)視。而且我們還可以創(chuàng)建自定義的事件來(lái)監(jiān)視應(yīng)用程序中的特定的部分。我們也可以在Health Monitoring中配置把應(yīng)用程序中的異常是記錄在系統(tǒng)的日志中還是Sql Server中,或者是以Email形式發(fā)送出去。最重要的一點(diǎn)就是:只要通過(guò)配置,我們可以少寫(xiě),甚至不寫(xiě)代碼就可以實(shí)現(xiàn)強(qiáng)大的異常處理策略(和類(lèi)似Enterprise Application Blocks,我們后面會(huì)提到的)。

同樣,我們還是在web.config中添加配置,在system.web節(jié)點(diǎn)中添加﹤healthMonitoring /﹥節(jié)點(diǎn):

默認(rèn)情況下是禁用的,我們啟用就應(yīng)該如下:

ASP.NET項(xiàng)目開(kāi)發(fā)中健康監(jiān)視Code1

﹤healthMonitoring enabled=”true﹥    ﹤eventMappings﹥﹤/eventMappings﹥    ﹤providers﹥﹤/providers﹥    ﹤rules﹥..﹤/rules﹥    ﹤profiles﹥..﹤/profiles﹥    ﹤bufferModes﹥..﹤/bufferModes﹥   ﹤/healthMonitoring﹥

下面就看看該節(jié)點(diǎn)下的一些配置:

eventMappings節(jié)點(diǎn)通過(guò)指定事件類(lèi)型來(lái)注冊(cè)事件類(lèi)。也就說(shuō),要注明我們?cè)趹?yīng)用程序中要監(jiān)聽(tīng)哪些事件,如下配置:

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

前面的"name"屬性是我們自己為后面的事件取的友好的名稱(chēng),從﹤eventMappings﹥的字面意思也可以知道:事件的映射。

后面的"type"就是我們要在程序中監(jiān)聽(tīng)的事件。之前也說(shuō)過(guò),我們可以監(jiān)聽(tīng)很多的事件:系統(tǒng)的啟動(dòng),關(guān)閉,驗(yàn)證失敗等。

如上所見(jiàn):"System.Web.Management.WebBaseErrorEvent" 是所有事件的基類(lèi)。它的子類(lèi)有很多:

WebApplicationLifetimeEvent--在應(yīng)用程序的運(yùn)行過(guò)程觸發(fā)的事情,如,當(dāng)應(yīng)用程序開(kāi)啟,關(guān)閉時(shí)

WebAuthenticationFailureAuditEvent--當(dāng)ASP.NET驗(yàn)證失敗是觸發(fā)

WebAuthenticationSuccessAuditEvent--驗(yàn)證成功時(shí)觸發(fā)

WebRequestErrorEvent--請(qǐng)求出錯(cuò)時(shí)觸發(fā)

除此之外,我們還可以自定義一些類(lèi),派生自基類(lèi)。

當(dāng)我們確定了要監(jiān)聽(tīng)的事件之后,我們就要選擇事件的provider,也就說(shuō),事件觸發(fā)后,我們把事情的信息記錄到那里。
配置如下:

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

這之前一樣:System.Web.Management.EventLogWebEventProvider是個(gè)基類(lèi),有很多的子類(lèi),這些子類(lèi)可以使得我們把異常的記錄在如sql數(shù)據(jù)庫(kù)中,系統(tǒng)日志中等:

SqlWebEventProvider--把異常信息記錄到數(shù)據(jù)庫(kù)中的提供程序

SimpleMailEventProvider--把異常信息通過(guò)Email發(fā)送的提供程序

還有一些,大家參看MSDN。

好了,到這里,我們把要監(jiān)聽(tīng)的事件選擇好了,如要監(jiān)聽(tīng)WebApplicationLifetimeEvent,WebRequestErrorEvent;而且我們也準(zhǔn)備把異常系統(tǒng)通過(guò)Email發(fā)送,我們選擇了SimpleMailEventProvider,通過(guò)也想把異常記錄到數(shù)據(jù)庫(kù)中,我們也選擇了SqlWebEventProvider。那么我們的配置就如下:

ASP.NET項(xiàng)目開(kāi)發(fā)中健康監(jiān)視Code2

﹤healthMonitoring enabled=”true﹥    ﹤eventMappings﹥     ﹤clear /﹥     ﹤add name=”CustomException” type=”System.Web.Management.WebApplicationLifetimeEvent” /﹥     ﹤add name=”AnotherException" type=”System.Web.Management.WebRequestErrorEvent” /﹥    ﹤/eventMappings﹥     ﹤providers﹥     ﹤clear /﹥     ﹤add name=”EmailProvider” type=”System.Web.Management.SimpleMailEventProvider” /﹥     ﹤add name=”SqlProvider” type=”System.Web.Management.WebRequestErrorEvent” /﹥    ﹤/providers﹥       ﹤/healthMonitoring﹥

注意:providers節(jié)點(diǎn)中的"name"屬性也是我們自己取的友好的名稱(chēng)。

好了,該定義的定義好了,現(xiàn)在還是不能按照我們的要求工作,那是因?yàn)槲覀冞€缺少一個(gè)"規(guī)則":
如下:

ASP.NET項(xiàng)目開(kāi)發(fā)中健康監(jiān)視Code3

﹤rules﹥    ﹤clear /﹥    ﹤add name=”Unhandled Exceptions Rule”     eventName=”Unhandled Exceptions”     provider=”EventLogProvider”     profile=”Default”     minInstances=”1”     maxLimit=”Infinite”     minInterval=”00:00:00” /﹥   ﹤/rules﹥

實(shí)際上,rules就是把我們之前定義的要監(jiān)聽(tīng)的事件和相應(yīng)的provider對(duì)象上來(lái):

﹤rules﹥   ﹤clear /﹥   ﹤add name=”MyRules1”    eventName=”CustomException”    provider=”EmailProvider”    profile=”Default”    minInstances=”1”    maxLimit=”Infinite”    minInterval=”00:00:00” /﹥  ﹤/rules﹥

注意上面的name屬性,其實(shí)和之前一樣,我們是給這個(gè)規(guī)則取個(gè)名字而已。eventName就是之前我們定義的事件名稱(chēng),如"CustomException",provider為之前定義的“EmailProvider” ,本條規(guī)則就是說(shuō),讓EmailProvider來(lái)處理CustomException的異常信息。其他的同理。

***一點(diǎn)要注意的就是:如果我們決定發(fā)送Email,那么我們還要配置節(jié)點(diǎn):

﹤system.net﹥    ﹤mailSettings﹥     ﹤smtp deliveryMethod=”P(pán)ickupDirectoryFromIis”﹥      ﹤network defaultCredentials=”true” host=”127.0.0.1” /﹥     ﹤/smtp﹥    ﹤/mailSettings﹥   ﹤/system.net﹥

這樣就行了。

感謝各位的閱讀,以上就是“ASP.NET項(xiàng)目開(kāi)發(fā)中健康監(jiān)視怎么實(shí)現(xiàn)”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)ASP.NET項(xiàng)目開(kāi)發(fā)中健康監(jiān)視怎么實(shí)現(xiàn)這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI