您好,登錄后才能下訂單哦!
這篇文章主要講解了“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)注!
免責(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)容。