熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> ASP編程 >> 正文

ASP.NET中用healthMonitor屬性用法

2013-11-15 12:53:29  來源: ASP編程 

  在ASPNET 可以使用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 文檔中的關於這些元素的東西
  
  在繼續之前這裡有一份含ASPNET中的一些Providers清單
  
  SystemWebManagementMailWebEventProvider
  SystemWebManagementSimpleMailWebEventProvider
  SystemWebManagementTemplatedMailWebEventProvider
  SystemWebManagementTraceWebEventProvider
  SystemWebManagementEventLogWebEventProvider
  SystemWebManagementSqlWebEventProvider
  SystemWebManagementWmiWebEventProvider
  
  不需要解釋這些名字告訴我們它們是干什麼的還要提一下SqlWebEventProvider依靠Sql server而工作它將事件存儲在aspnet_Web_Event表為了安裝此數據庫必須運行位於framework文件夾中的aspnet_regsqlexe向導
  
  現在配置對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=SystemWebManagementSimpleMailWebEventProvider SystemWeb 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=SystemWebManagementSqlWebEventProvider SystemWeb
  connectionStringName=LocalSqlServer maxEventDetailsLength= buffer=true
  bufferMode=Analysis/>
  
  </providers>
  
  <eventMappings>
  
  <add name=All Errors type=SystemWebManagementWebBaseErrorEvent SystemWeb />
  <add name=Request Processing Errors type=SystemWebManagementWebRequestErrorEvent SystemWeb />
  
  </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 一起發布的事件
  
  SystemWebManagementWebBaseEvent
  SystemWebManagementWebHeartBeatEvent
  SystemWebManagementWebApplicationLifetimeEvent
  SystemWebManagementWebRequestEvent
  SystemWebManagementWebBaseErrorEvent
  SystemWebManagementWebErrorEvent
  SystemWebManagementWebRequestErrorEvent
  SystemWebManagementWebAuditEvent
  SystemWebManagementWebFailureAuditEvent
  SystemWebManagementWebSuccessAuditEvent
  SystemWebManagementWebManagementEvent
  SystemWebManagementWebViewStateFailureAuditEvent
  SystemWebManagementWebAuthenticationFailureAuditEvent
  SystemWebManagementWebAuthenticationSuccessAuditEvent
  
  可以使用這些事件來對一個provider畫圖也可以創建通過WebBaseEvent類繼承來的自己的事件
  
  為自動喚醒一個事件可以使用WebBaseEvent類的喚醒方法
  
  try
  {
  //
  }
  
  catch(Exception e)
  {
  if (HealthMonitoringManagerEnabled)
  {
  WebBaseEventRaise(new WebErrorEvent(My Error message null e));
  }
  }
  
  or:
  
  if (HealthMonitoringManagerEnabled)
  {
  WebErrorEvent event = new WebErrorEvent(My error message null e);
  eventRaise();
  }
From:http://tw.wingwit.com/Article/program/ASP/201311/21823.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.