以健康監控的功能來看,目前ASP.NET 3.5有內建 Web 事件,並且已經設定提供者當做系統預設值。但是,rules 項目中只啟用兩個事件:All Errors 和 Failure Audits,這兩個事件都已啟用並且已由 EventLogProvider 訂閱。 所以如果要將記錄的資料用資料庫來保存的話,那麼就外另外設定使用:SqlWebEventProvider 才行。
以下是亞當斯設計的步驟:
1.一開始先新增一支DemoHealthMonitoring.aspx給個按鈕,動作是產生自訂錯誤 :
protected void Button1_Click(object sender, EventArgs e)
{
throw new Exception("自訂錯誤");
}
3.執行後,可以先檢視事件檢視器,並且對照機器層級的Web.config設定,可看到有WebEvent被觸發紀錄。
4. 接下來可以透過設定將網頁事件紀錄到SQL中,設定方式為設定Web.config中的<healthMonitoring> ,設定如下 :
<healthMonitoring>
<!--先加入一個eventMappings偵測網頁事件-->
<eventMappings>
<add name="ASP.NET Events"
type="System.Web.Management.WebBaseEvent"/>
</eventMappings>
<!--設定使用SQL來記錄訊息-->
<providers>
<add name="MySqlWebEventProvider"
type="System.Web.Management.SqlWebEventProvider"
connectionStringName="LocalSqlServer"
bufferMode="Notification"/>
</providers>
<!--設定規則-->
<rules>
<add
name="All Errors"
eventName="ASP.NET Events"
provider="MySqlWebEventProvider" />
</rules>
</healthMonitoring>
5.再次執行DemoHealthMonitoring.aspx,過一分鐘後可以檢視App_Data中, 會多了一個ASPNETDB.MDF資料庫,檢視其中的aspnet_WebEvent_Events資料表即可!!
下列檔案為此篇文章的範例程式,有興趣的朋友可自行下載:
沒有留言:
張貼留言