您好,登錄后才能下訂單哦!
這篇文章主要講解了“ASP.NET項目開發中健康監視怎么實現”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“ASP.NET項目開發中健康監視怎么實現”吧!
健康監視(Health Monitoring),Health Monitoring是ASP.NET2.0以后版本添加的新的特性。它可以允許開發人員監視應用程序中發生的異常的事件。而且監視應用程序的啟動,關閉,驗證等都有相對應的事件來監視。而且我們還可以創建自定義的事件來監視應用程序中的特定的部分。我們也可以在Health Monitoring中配置把應用程序中的異常是記錄在系統的日志中還是Sql Server中,或者是以Email形式發送出去。最重要的一點就是:只要通過配置,我們可以少寫,甚至不寫代碼就可以實現強大的異常處理策略(和類似Enterprise Application Blocks,我們后面會提到的)。
同樣,我們還是在web.config中添加配置,在system.web節點中添加﹤healthMonitoring /﹥節點:
默認情況下是禁用的,我們啟用就應該如下:
ASP.NET項目開發中健康監視Code1
﹤healthMonitoring enabled=”true﹥ ﹤eventMappings﹥﹤/eventMappings﹥ ﹤providers﹥﹤/providers﹥ ﹤rules﹥..﹤/rules﹥ ﹤profiles﹥..﹤/profiles﹥ ﹤bufferModes﹥..﹤/bufferModes﹥ ﹤/healthMonitoring﹥
下面就看看該節點下的一些配置:
eventMappings節點通過指定事件類型來注冊事件類。也就說,要注明我們在應用程序中要監聽哪些事件,如下配置:
﹤eventMappings﹥ ﹤clear /﹥ ﹤add name=”CustomException” type=”System.Web.Management.WebBaseErrorEvent” /﹥ ﹤/eventMappings﹥
前面的"name"屬性是我們自己為后面的事件取的友好的名稱,從﹤eventMappings﹥的字面意思也可以知道:事件的映射。
后面的"type"就是我們要在程序中監聽的事件。之前也說過,我們可以監聽很多的事件:系統的啟動,關閉,驗證失敗等。
如上所見:"System.Web.Management.WebBaseErrorEvent" 是所有事件的基類。它的子類有很多:
WebApplicationLifetimeEvent--在應用程序的運行過程觸發的事情,如,當應用程序開啟,關閉時
WebAuthenticationFailureAuditEvent--當ASP.NET驗證失敗是觸發
WebAuthenticationSuccessAuditEvent--驗證成功時觸發
WebRequestErrorEvent--請求出錯時觸發
除此之外,我們還可以自定義一些類,派生自基類。
當我們確定了要監聽的事件之后,我們就要選擇事件的provider,也就說,事件觸發后,我們把事情的信息記錄到那里。
配置如下:
﹤providers﹥ ﹤clear /﹥ ﹤add name=”EventLogProvider” type=”System.Web.Management.EventLogWebEventProvider” /﹥ ﹤/providers﹥
這之前一樣:System.Web.Management.EventLogWebEventProvider是個基類,有很多的子類,這些子類可以使得我們把異常的記錄在如sql數據庫中,系統日志中等:
SqlWebEventProvider--把異常信息記錄到數據庫中的提供程序
SimpleMailEventProvider--把異常信息通過Email發送的提供程序
還有一些,大家參看MSDN。
好了,到這里,我們把要監聽的事件選擇好了,如要監聽WebApplicationLifetimeEvent,WebRequestErrorEvent;而且我們也準備把異常系統通過Email發送,我們選擇了SimpleMailEventProvider,通過也想把異常記錄到數據庫中,我們也選擇了SqlWebEventProvider。那么我們的配置就如下:
ASP.NET項目開發中健康監視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節點中的"name"屬性也是我們自己取的友好的名稱。
好了,該定義的定義好了,現在還是不能按照我們的要求工作,那是因為我們還缺少一個"規則":
如下:
ASP.NET項目開發中健康監視Code3
﹤rules﹥ ﹤clear /﹥ ﹤add name=”Unhandled Exceptions Rule” eventName=”Unhandled Exceptions” provider=”EventLogProvider” profile=”Default” minInstances=”1” maxLimit=”Infinite” minInterval=”00:00:00” /﹥ ﹤/rules﹥
實際上,rules就是把我們之前定義的要監聽的事件和相應的provider對象上來:
﹤rules﹥ ﹤clear /﹥ ﹤add name=”MyRules1” eventName=”CustomException” provider=”EmailProvider” profile=”Default” minInstances=”1” maxLimit=”Infinite” minInterval=”00:00:00” /﹥ ﹤/rules﹥
注意上面的name屬性,其實和之前一樣,我們是給這個規則取個名字而已。eventName就是之前我們定義的事件名稱,如"CustomException",provider為之前定義的“EmailProvider” ,本條規則就是說,讓EmailProvider來處理CustomException的異常信息。其他的同理。
***一點要注意的就是:如果我們決定發送Email,那么我們還要配置節點:
﹤system.net﹥ ﹤mailSettings﹥ ﹤smtp deliveryMethod=”PickupDirectoryFromIis”﹥ ﹤network defaultCredentials=”true” host=”127.0.0.1” /﹥ ﹤/smtp﹥ ﹤/mailSettings﹥ ﹤/system.net﹥
這樣就行了。
感謝各位的閱讀,以上就是“ASP.NET項目開發中健康監視怎么實現”的內容了,經過本文的學習后,相信大家對ASP.NET項目開發中健康監視怎么實現這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。