HOW TO:實作和引發自訂 ASP.NET 健康監視事件
更新:2007 年 11 月
本章節中的範例將說明如何引發 ASP.NET 自訂健康監視事件。當您將自訂事件加入至應用程式時,必須考慮下列幾點:
如何設定健康監視事件的範圍。如果事件是要在伺服器上所有應用程式中引發,您就必須將事件範圍設定為整個電腦。建立引發自訂事件的 HTTP 模組是達成上述工作的慣用方法 (如以下的範例所示),然後在電腦層級上安裝模組。在安裝模組的電腦上,所有應用程式都會呼叫這個模組。
引發健康監視事件的時機。您可以在處理要求期間隨時引發健康監視事件。通常引發自訂 WebRequestEvent 的時機是在系統 BeginRequest 或 EndRequest 事件中。
本範例示範下列功能:
建置引發自訂健康監視事件的 HTTP 模組。
將應用程式設定為使用標準的 EventLogWebEventProvider 記錄事件。
使用標準的 EventLogWebEventProvider 記錄事件資訊。
如果要執行這個範例,則需要下列項目:
在執行 Web 應用程式的伺服器上安裝網際網路資訊服務 (IIS)。如需詳細資訊,請參閱 HOW TO:在 IIS 5.0 和 6.0 中建立和設定虛擬目錄,或在 https://www.microsoft.com/taiwan 上搜尋「網際網路資訊服務」。
ASP.NET Web 應用程式。如需詳細資訊,請參閱 ASP.NET 網站配置。
若要建置 HTTP 模組
將引發自訂 ASP.NET 健康監視事件範例原始程式碼放在 ASP.NET 應用程式的 App_Code 目錄之下,名為 SampleModule.vb 或 SampleModule.cs 的檔案中。
注意事項: 如果應用程式的 App_Code 目錄中已經有原始程式碼存在,則必須加入以目錄中現有程式碼相同的語言所撰寫的自訂事件提供者版本。
當要求應用程式中的網頁時,ASP.NET 會編譯自訂事件提供者程式碼。如需詳細資訊,請參閱 ASP.NET 網站中的共用程式碼資料夾。
-或-
將自訂事件提供者編譯為程式庫,並且放在 Web 應用程式的 Bin 目錄中,或以強式名稱命名組件並將其放在全域組件快取 (GAC) 中。
下列命令範例示範如何使用命令列編譯器編譯範例。
vbc /out:<example_name>.dll /t:library <example_name>.vb /r:System.Web.dll /r:System.Configuration.dll /r:<required namespace>
csc /out:<example_name>.dll /t:library <example_name>.cs /r:System.Web.dll /r:System.Configuration.dll /r:<required namespace>
注意事項: 如果無法執行此編譯器命令,您必須在執行命令之前,將 .NET Framework 安裝路徑加入至 Windows PATH 變數。在 Windows 中,以滑鼠右鍵按一下 [我的電腦],然後依序按一下 [內容]、[進階] 索引標籤和 [環境變數] 按鈕。在 [系統變數] 清單中,按兩下 Path 變數。在 [變數值] 文字方塊中,將分號 (;) 加在文字方塊中現有值的結尾,然後輸入 .NET Framework 安裝的路徑。.NET Framework 通常是安裝在 \Microsoft.NET\Framework\versionNumber 的 Windows 安裝資料夾中。
若要設定 ASP.NET 應用程式使用範例
如果 ASP.NET 應用程式的根資料夾中已經存在名為 Web.config 的檔案,請開啟它。否則,請建立名為 Web.config 的文字檔並在其中複製下列文字:
<?xml version="1.0"?> <configuration xmlns="https://schemas.microsoft.com/.NetConfiguration/v2.0"> <system.web> </system.web> </configuration>
在 system.web 標記中,加入下列 httpModules 和 healthMonitoring 項目 (ASP.NET 設定結構描述) 項目。
<httpModules> <add name="Raising Custom Web Events" type="Samples.AspNet.Management.CustomWebEvents" /> </httpModules> <healthMonitoring heartbeatInterval="0" enabled="true"> <eventMappings> <add name="SampleWebRequestEvent" type="Samples.AspNet.Management.SampleWebRequestEvent" /> </eventMappings> <profiles> <add name="Custom" minInstances="1" maxLimit="Infinite" minInterval="00:00:00" /> </profiles> <rules> <clear /> <add name="Custom Web Request Event" eventName="SampleWebRequestEvent" provider="EventLogProvider" profile="Custom" /> </rules> </healthMonitoring>
type 屬性能夠只列出類別名稱 (如同之前的程式碼範例中所示),也能夠列出完整的型別,如下列程式碼範例所示:
type="Samples.AspNet.Management.SampleWebRequestEvent, Sample.SampleModule,Version=1.0.0.0,Culture=neutral, PublicKeyToken=xxxxxxxxxxxx"
注意事項: 只有類別安裝在 GAC 或 Bin 目錄時才需要完整型別。
若要測試自訂 Web 事件
在執行 Web 應用程式的伺服器上執行 Windows 事件檢視器。請按一下 [開始],再按一下 [執行],在 [執行] 對話方塊中輸入 eventvwr,然後按一下 [確定]。
在事件檢視器的事件記錄樹狀目錄中,按一下 [應用程式]。
按一下 [執行] 然後按下 [重新整理],重新整理應用程式記錄檔的檢視。
請記下最近一次事件的日期、時間和名稱,稍後可以用於驗證您的自訂事件已經引發。
在瀏覽器中,從 Web 應用程式要求任何網頁。
若要使用應用程式中的自訂事件,請從瀏覽器中的應用程式執行網頁,然後檢查自訂事件所建立的結果。
再次重新整理應用程式記錄檔,並且驗證由自訂事件所發出的健康事件資訊已經記錄下來。
請參閱
工作
概念
參考
healthMonitoring 項目 (ASP.NET 設定結構描述)