共用方式為


使用 ELMAH 記錄錯誤的詳細資料 (C#)

作者 :Scott Mitchell

ELMAH (錯誤記錄模組和處理常式) 提供另一種方法來記錄生產環境中的執行時間錯誤。 ELMAH 是免費的開放原始碼錯誤記錄程式庫,其中包含錯誤篩選等功能,以及從網頁檢視錯誤記錄檔、以 RSS 摘要或下載為逗號分隔檔案的功能。 本教學課程會逐步解說下載和設定 ELMAH。

簡介

上述教學課程已檢查 ASP。NET 的健康情況監視系統,提供現成的程式庫來錄製各種 Web 事件。 許多開發人員會使用健康情況監視來記錄和傳送未處理例外狀況的詳細資料。 不過,此系統有一些困難點。 首先,最重要的是缺少任何類型的使用者介面,可檢視所記錄事件的相關資訊。 如果您想要查看最後 10 個錯誤的摘要,或檢視過去一周發生的錯誤詳細資料,您必須透過資料庫進行點選、掃描您的電子郵件收件匣,或建置顯示資料表資訊的 aspnet_WebEvent_Events 網頁。

另一個痛點會以健康情況監視的複雜度為中心。 由於健康情況監視可用來記錄大量不同的事件,而且因為有各種選項可用來指示記錄事件的方式和時間,因此正確設定健康情況監視系統可能是單向工作。 最後,有相容性問題。 由於健康情況監視第一次新增至 2.0 版中的.NET Framework,因此不適用於使用 ASP.NET 1.x 版建置的舊版 Web 應用程式。 此外, SqlWebEventProvider 我們在上一個教學課程中用來將錯誤詳細資料記錄到資料庫的 類別,僅適用于 Microsoft SQL Server 資料庫。 如果您需要將錯誤記錄到替代資料存放區,例如 XML 檔案或 Oracle 資料庫,您必須建立自訂記錄提供者類別。

健康情況監視系統的替代方法是錯誤記錄模組和處理常式 (ELMAH) ,這是 Atif Aziz所建立的免費開放原始碼錯誤記錄系統。 這兩個系統之間最值得注意的差異是 ELARS 能夠顯示錯誤清單,以及從網頁顯示特定錯誤的詳細資料,以及 RSS 摘要。 ELMAH 比健全狀況監視更容易設定,因為它只會記錄錯誤。 此外,ELMAH 也支援 ASP.NET 1.x、ASP.NET 2.0 和 ASP.NET 3.5 應用程式,並隨附各種記錄來源提供者。

本教學課程將逐步解說將 ELMAH 新增至 ASP.NET 應用程式所涉及的步驟。 現在就開始吧!

注意

健康情況監視系統和 ELMAH 都有自己的優缺點集合。 我們鼓勵您嘗試這兩個系統,並決定哪一個最符合您的需求。

將 ELMAH 新增至 ASP.NET Web 應用程式

將 ELMAH 整合到新的或現有的 ASP.NET 應用程式是一個簡單且直接的程式,需要五分鐘的時間。 簡單地說,它牽涉到四個簡單的步驟:

  1. 下載 ELMAH 並將元件新增 Elmah.dll 至 Web 應用程式,
  2. 在 中 Web.config 註冊 ELMAH 的 HTTP 模組和處理常式
  3. 指定 ELMAH 的組態選項,以及
  4. 視需要建立錯誤記錄檔來源基礎結構。

讓我們逐一逐步解說這四個步驟中的每一個步驟。

步驟 1:下載 ELMAH 專案檔並新增 Elmah.dll 至 Web 應用程式

本教學課程提供的下載包含 ELMAH 1.0 BETA 3 (組建 10617) ,這是撰寫時最新的版本。 或者,您可以造訪 ELMAH 網站 以取得最新版本或下載原始程式碼。 將 ELMAH 下載解壓縮到桌面上的資料夾,並找出 ELMAH 元件檔案 (Elmah.dll) 。

注意

檔案 Elmah.dll 位於下載的 Bin 資料夾中,其中包含不同.NET Framework版本的子資料夾,以及發行和偵錯組建的子資料夾。 針對適當的架構版本使用發行組建。 例如,如果您要建置 ASP.NET 3.5 Web 應用程式,請從 Bin\net-3.5\Release 資料夾複製 Elmah.dll 檔案。

接下來,開啟 Visual Studio,並以滑鼠右鍵按一下Solution Explorer中的網站名稱,然後選擇操作功能表中的 [新增參考],將元件新增至您的專案。 這會顯示 [加入參考] 對話方塊。 流覽至 [流覽] 索引標籤,然後選擇檔案 Elmah.dll 。 此動作會將 Elmah.dll 檔案新增至 Web 應用程式 Bin 的資料夾。

注意

WEB 應用程式專案 (WAP) 類型不會顯示 Bin Solution Explorer中的資料夾。 相反地,它會列出 [參考] 資料夾下的這些專案。

元件 Elmah.dll 包含 ELMAH 系統所使用的類別。 這些類別分為三個類別的其中一個:

  • HTTP 模組 - HTTP 模組是定義事件事件處理常式 HttpApplication 的類別,例如 Error 事件。 ELMAH 包含多個 HTTP 模組,其中三個最德文的模組為:

    • ErrorLogModule - 將未處理的例外狀況記錄到記錄來源。
    • ErrorMailModule - 傳送電子郵件訊息中未處理的例外狀況詳細資料。
    • ErrorFilterModule - 套用開發人員指定的篩選,以判斷記錄哪些例外狀況,以及忽略哪些例外狀況。
  • HTTP 處理常式 - HTTP 處理常式 是負責產生特定要求類型標記的類別。 ELMAH 包含 HTTP 處理常式,可將錯誤詳細資料轉譯為網頁、RSS 摘要,或以逗號分隔的檔案 (CSV) 。

  • 錯誤記錄來源- 現成的 ELMAH 可以將錯誤記錄到記憶體、Microsoft SQL Server資料庫、Microsoft Access 資料庫、Oracle 資料庫、XML 檔案、SQLite 資料庫或 Vista DB 資料庫。 如同健康情況監視系統,ELMAH 的架構是使用提供者模型所建置,這表示您可以視需要建立並順暢地整合您自己的自訂記錄來源提供者。

步驟 2:註冊 ELMAH 的 HTTP 模組和處理常式

Elmah.dll雖然檔案包含自動記錄未處理的例外狀況以及從網頁顯示錯誤詳細資料所需的 HTTP 模組和處理常式,但必須在 Web 應用程式的組態中明確註冊這些錯誤詳細資料。 ErrorLogModule一旦註冊 HTTP 模組,就會訂閱 HttpApplicationError 事件。 每當引發此事件時,會將 ErrorLogModule 例外狀況的詳細資料記錄到指定的記錄來源。 我們將在下一節「設定 ELMAH」中瞭解如何定義記錄來源提供者。 ErrorLogPageFactory 從網頁檢視錯誤記錄檔時,HTTP 處理常式處理站會負責產生標記。

註冊 HTTP 模組和處理常式的特定語法取決於支援網站的網頁伺服器。 針對 ASP.NET Development Server 和 Microsoft 的 IIS 6.0 版和更早版本,HTTP 模組和處理常式會在 和 <httpHandlers> 區段中註冊 <httpModules> ,出現在 元素內 <system.web> 。 如果您使用 IIS 7.0,則必須在 <system.webServer> 元素的 <modules><handlers> 區段中註冊它們。 幸運的是,不論使用的 Web 服務器為何,您 都可以在這兩 個地方定義 HTTP 模組和處理常式。 此選項是最可攜式選項,因為它允許在開發和生產環境中使用相同的組態,而不論所使用的網頁伺服器為何。

首先, ErrorLogModule 在 的 和 <httpHandlers> 區段中 <system.web> 註冊 HTTP 模組和 ErrorLogPageFactory HTTP 處理常式 <httpModules> 。 如果您的組態已經定義這兩個元素,則只要包含 <add> ELMAH HTTP 模組和處理常式的 元素即可。

<?xml version="1.0"?>
<configuration>
  ...
  
  <system.web>
  ...

  <httpHandlers>
  ...

  <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
  </httpHandlers>
  
  <httpModules>
  ...
  
  <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
  </httpModules>

  ...
  </system.web>

  ...
</configuration>

接下來,在 元素中 <system.webServer> 註冊 ELMAH 的 HTTP 模組和處理常式。 如同先前,如果此元素尚未出現在您的設定中,請加以新增。

<?xml version="1.0"?>
<configuration>
  ...

  <system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules>
  ...

  <add name="Elmah.ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
  </modules>
  <handlers>
  ...

  <add name="Elmah" path="elmah.axd" verb="POST,GET,HEAD" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
  </handlers>
  </system.webServer>
</configuration>

根據預設,IIS 7 會抱怨 HTTP 模組和處理常式是否已在 <system.web> 區段中註冊。 元素 validateIntegratedModeConfiguration 中的 <validation> 屬性會指示 IIS 7 隱藏這類錯誤訊息。

請注意,註冊 ErrorLogPageFactory HTTP 處理常式的語法包含 path 屬性,其設定為 elmah.axd 。 這個屬性會通知 Web 應用程式,如果要求抵達名為 elmah.axd 的頁面,則要求應該由 ErrorLogPageFactory HTTP 處理常式處理。 我們稍後會在本教學課程中看到 ErrorLogPageFactory 作用中的 HTTP 處理常式。

步驟 3:設定 ELMAH

ELMAH 會在名為 的 Web.config 自訂群組態區段中 <elmah> ,于網站的 檔案中尋找其組態選項。 若要使用它中的 Web.config 自訂區段,必須先在 元素中 <configSections> 定義。 開啟 檔案, Web.config 並將下列標記新增至 <configSections>

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
  ...

  <sectionGroup name="elmah">
  <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah"/>
  <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
  <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
  <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah"/>
  </sectionGroup>
  </configSections>

  ...
</configuration>

注意

如果您要為 ASP.NET 1.x 應用程式設定 ELMAH,請從 <section> 上述元素中移除 requirePermission="false" 屬性。

上述語法會註冊自訂 <elmah> 區段及其子區段: <security><errorLog><errorMail><errorFilter>

接下來,將 區 <elmah> 段新增至 Web.config 。 此區段應該會顯示在與 元素相同的層級 <system.web> 。 在 <elmah> 區段中新增 <security><errorLog> 區段,如下所示:

<?xml version="1.0"?>
<configuration>
  ...

  <elmah>
  <security allowRemoteAccess="0" />
  
  <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="ReviewsConnectionString" />
  </elmah>

  ...
</configuration>

<security> 段的屬性 allowRemoteAccess 指出是否允許遠端存取。 如果此值設定為 0,則錯誤記錄網頁只能在本機檢視。 如果此屬性設定為 1,則遠端和本機訪客都會啟用錯誤記錄網頁。 現在,讓我們停用遠端訪客的錯誤記錄網頁。 我們稍後將允許遠端存取,我們有機會討論這樣做的安全性考慮。

<errorLog> 段會定義錯誤記錄檔來源,其會指定記錄錯誤詳細資料的位置;它類似于健康情況監視系統中的 <providers> 區段。 上述語法會將 SqlErrorLog 類別指定為錯誤記錄檔來源,它會將錯誤記錄到屬性值所 connectionStringName 指定的 Microsoft SQL Server 資料庫。

注意

ELMAH 隨附其他錯誤記錄提供者,可用來將錯誤記錄至 XML 檔案、Microsoft Access 資料庫、Oracle 資料庫和其他資料存放區。 如需如何使用這些替代錯誤記錄提供者的資訊,請參閱 ELMAH 下載隨附的範例 Web.config 檔案。

步驟 4:建立錯誤記錄檔來源基礎結構

ELMAH 的提供者會將 SqlErrorLog 錯誤詳細資料記錄至指定的 Microsoft SQL Server 資料庫。 提供者 SqlErrorLog 預期此資料庫具有名為 ELMAH_Error 的資料表,以及三個預存程式: ELMAH_GetErrorsXmlELMAH_GetErrorXmlELMAH_LogError 。 ELMAH 下載包含資料夾中名為 SQLServer.sqldb 的檔案,其中包含用來建立此資料表的 T-SQL 和這些預存程式。 您必須在資料庫上執行這些語句,才能使用 SqlErrorLog 提供者。

圖 12 會在新增提供者所需的 SqlErrorLog 資料庫物件之後,在 Visual Studio 中顯示資料庫總管。

顯示 S Q L 錯誤記錄提供者記錄寫入資料表錯誤的螢幕擷取畫面。

圖 1:提供者會將 SqlErrorLog 錯誤記錄至 ELMAH_Error 資料表

顯示 S Q L 錯誤記錄提供者如何使用三個預存程式的螢幕擷取畫面。

圖 2SqlErrorLog 提供者使用三個預存程式

ELMAH 作用中

此時,我們已將 ELMAH 新增至 Web 應用程式、註冊 ErrorLogModule HTTP 模組和 ErrorLogPageFactory HTTP 處理常式、在 中 Web.config 指定 ELMAH 的組態選項,並新增錯誤記錄提供者所需的資料庫物件 SqlErrorLog 。 我們現在已準備好查看 ELMAH 運作情形! 流覽書籍評論網站,並流覽產生執行階段錯誤的頁面,例如 Genre.aspx?ID=foo 或不存在的頁面,例如 NoSuchPage.aspx 。 流覽這些頁面時看到的內容取決於您 <customErrors> 的設定,以及您要在本機或遠端流覽。 (如需本主題的重新整理,請參閱顯示自訂錯誤頁面教學課程。)

ELMAH 不會影響發生未處理的例外狀況時向使用者顯示的內容;它只會記錄其詳細資料。 此錯誤記錄可從網站的根目錄存取網頁 elmah.axd ,例如 http://localhost/BookReviews/elmah.axd 。 (此檔案實際上不存在於您的專案中,但當執行時間的要求傳入 elmah.axd 時,會將它分派給 ErrorLogPageFactory HTTP 處理常式,這會產生傳回瀏覽器的標記。)

注意

您也可以使用 elmah.axd 頁面來指示 ELMAH 產生測試錯誤。 elmah.axd/test流覽 (, http://localhost/BookReviews/elmah.axd/test) 會導致 ELMAH 擲回類型的 Elmah.TestException 例外狀況,其中包含錯誤訊息:「這是可以安全地忽略的測試例外狀況」。

圖 3 顯示從開發環境流覽 elmah.axd 時的錯誤記錄檔。

顯示錯誤記錄檔從網頁顯示方式的螢幕擷取畫面。

圖 3Elmah.axd 顯示網頁的錯誤記錄檔
(按一下即可檢視完整大小的映射)

圖 3中的錯誤記錄檔包含六個錯誤專案。 每個專案都包含 HTTP 狀態碼 (404 或 500,這些錯誤) 、類型、描述、發生錯誤時登入使用者的名稱,以及日期和時間。 按一下 [詳細資料] 連結會顯示一個頁面,其中包含 [錯誤詳細資料] 黃色畫面中的相同錯誤訊息, (請參閱 圖 4) ,以及 (錯誤時伺服器變數的值,請參閱 圖 5) 。 您也可以檢視儲存錯誤詳細資料的原始 XML,其中包含其他資訊,例如 HTTP POST 標頭中的值。

顯示錯誤詳細資料的螢幕擷取畫面 YSOD。

圖 4:檢視錯誤詳細資料 YSOD
(按一下即可檢視完整大小的映射)

顯示伺服器變數集合值的螢幕擷取畫面。

圖 5:探索錯誤時伺服器變數集合的值
(按一下即可檢視完整大小的映射)

將 ELMAH 部署至生產網站需要:

  • 將檔案 Elmah.dll 複製到 Bin 生產環境上的資料夾,
  • 將 ELMAH 特定的組態設定 Web.config 複製到生產環境所使用的檔案,以及
  • 將錯誤記錄檔來源基礎結構新增至生產資料庫。

我們已探索在先前的教學課程中,將檔案從開發複製到生產環境的技術。 在生產資料庫上取得錯誤記錄檔來源基礎結構最簡單的方式,可能是使用 SQL Server Management Studio 連線到生產資料庫,然後執行 SqlServer.sql 腳本檔案,這會建立所需的資料表和預存程式。

在生產環境中檢視錯誤詳細資料頁面

將網站部署至生產環境之後,請流覽生產網站並產生未處理的例外狀況。 如同在開發環境中,ELMAH 不會影響發生未處理的例外狀況時所顯示的錯誤頁面;相反地,它只會記錄錯誤。 如果您嘗試從生產環境流覽錯誤記錄頁面 (elmah.axd) ,您將會看到 圖 6所示的 [禁止] 頁面。

顯示遠端訪客無法檢視錯誤記錄網頁的螢幕擷取畫面。

圖 6:根據預設,遠端訪客無法檢視錯誤記錄網頁
(按一下即可檢視完整大小的映射)

回想一下,在 ELMAH 組態的 <security> 區段中,我們將 屬性設定 allowRemoteAccess 為 0,這會禁止遠端使用者檢視錯誤記錄檔。 請務必禁止匿名訪客檢視錯誤記錄檔,因為錯誤詳細資料可能會顯示安全性弱點或其他敏感性資訊。 如果您決定將此屬性設定為 1 並啟用錯誤記錄檔的遠端存取,請務必鎖定 elmah.axd 路徑,以便只有授權的訪客可以存取。 這可以藉由將元素新增 <location>Web.config 檔案來達成。

下列設定只允許管理員角色中的使用者存取錯誤記錄網頁:

<?xml version="1.0"?>
<configuration>
  ...

  <elmah>
  <security allowRemoteAccess="1" />
  
  ...
  </elmah>

  ...

  <location path="elmah.axd">
  <system.web>
  <authorization>
  <allow roles="Admin" />
  <deny users="*" />
  </authorization>
  </system.web>  
  </location>
</configuration>

注意

在設定使用應用程式服務的網站教學課程中,已新增管理員角色和系統中的三個使用者 Scott、Jisun 和 Alice。 使用者 Scott 和 Jisun 是管理員角色的成員。 如需驗證和授權的詳細資訊,請參閱我的 網站安全性教學課程

遠端使用者現在可以檢視生產環境上的錯誤記錄檔;如需錯誤記錄網頁的螢幕擷取畫面,請參閱 圖 345 。 不過,如果匿名或非管理員使用者嘗試檢視錯誤記錄頁,則會自動重新導向至登入頁面 (Login.aspx) ,如圖 7所示。

顯示未經授權使用者自動重新導向至登入頁面的螢幕擷取畫面。

圖 7:未經授權的使用者會自動重新導向至登入頁面
(按一下即可檢視完整大小的映射)

以程式設計方式記錄錯誤

ELMAH 的 ErrorLogModule HTTP 模組會自動將未處理的例外狀況記錄到指定的記錄來源。 或者,您也可以記錄錯誤,而不需要使用 ErrorSignal 類別和其 Raise 方法引發未處理的例外狀況。 方法 Raise 會傳遞 Exception 物件,並將它記錄為已擲回該例外狀況,且已到達 ASP.NET 執行時間,而不會受到處理。 不過,差異在於要求在呼叫 方法之後 Raise 繼續正常執行,而擲回的未處理的例外狀況會中斷要求的正常執行,並導致 ASP.NET 執行時間顯示已設定的錯誤頁面。

類別 ErrorSignal 在有一些動作可能會失敗的情況中很有用,但其失敗對正在執行的整體作業並不嚴重。 例如,網站可能包含接受使用者輸入的表單、將其儲存在資料庫中,然後傳送電子郵件給使用者,告知他們資訊已處理。 如果資訊已成功儲存至資料庫,但傳送電子郵件訊息時發生錯誤,會發生什麼事? 其中一個選項是擲回例外狀況,並將使用者傳送至錯誤頁面。 不過,這可能會讓使用者認為他們輸入的資訊並未儲存。 另一種方法是記錄電子郵件相關錯誤,但不會以任何方式改變使用者體驗。 這是類別 ErrorSignal 很有用的地方。

// ... Save user's information to the database ...
...

// Attempt to send the user a confirmation email
try
{
    // ... Send an email ...
}
catch (Exception e)
{
    // Error in sending email. Log it!
    ErrorSignal.FromCurrentContext().Raise(e);
}

透過Email的錯誤通知

除了將錯誤記錄到資料庫之外,ELMAH 也可以設定為將錯誤詳細資料傳送給指定的收件者。 這項功能是由 ErrorMailModule HTTP 模組提供;因此,您必須註冊此 HTTP 模組 Web.config ,才能透過電子郵件傳送錯誤詳細資料。

<?xml version="1.0"?>
<configuration>
  ...
  
  <system.web>
  ...

  <httpModules>
  ...
  
  <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
  <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah"/>
  </httpModules>
  </system.web>

  <system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules>
  ...

  <add name="Elmah.ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
  <add name="Elmah.ErrorMail" type="Elmah.ErrorMailModule" preCondition="managedHandler" />
  </modules>
  
  ...
  </system.webServer>
</configuration>

接下來,在 元素的 <errorMail> 區段中指定錯誤電子郵件 <elmah> 的相關資訊,指出電子郵件的寄件者和收件者、主旨,以及電子郵件是否以非同步方式傳送。

<?xml version="1.0"?>
<configuration>
  ...

  <elmah>
  ...

  <errorMail from="support@example.com"
  to="support@example.com"
  subject="Book Reviews Runtime Error"
  async="true" />
  </elmah>

  ...
</configuration>

使用上述設定,每當發生執行階段錯誤 ELMAH 時,就會傳送含有錯誤詳細資料的電子郵件給 support@example.com 。 ELMAH 的錯誤電子郵件包含錯誤詳細資料網頁中顯示的相同資訊,也就是錯誤訊息、堆疊追蹤,以及伺服器變數 (參考 圖 45) 。 錯誤電子郵件也包含「例外狀況詳細資料」黃色的「死時畫面」內容,作為附件 (YSOD.html) 。

圖 8 顯示流覽 所產生的 Genre.aspx?ID=foo ELMAH 錯誤電子郵件。 雖然 圖 8 只顯示錯誤訊息和堆疊追蹤,但伺服器變數會進一步包含在電子郵件的本文中。

顯示您可以設定 ELMAH 透過電子郵件傳送錯誤詳細資料的螢幕擷取畫面。

圖 8:您可以設定 ELMAH 透過 Email 傳送錯誤詳細資料
(按一下即可檢視完整大小的映射)

僅記錄感興趣的錯誤

根據預設,ELMAH 會記錄每個未處理例外狀況的詳細資料,包括 404 和其他 HTTP 錯誤。 您可以使用錯誤篩選,指示 ELMAH 忽略這些或其他類型的錯誤。 篩選邏輯是由 ELMAH 的 ErrorFilterModule HTTP 模組執行,您必須註冊 Web.config 才能使用篩選邏輯。 篩選的規則是在 區 <errorFilter> 段中指定。

下列標記會指示 ELMAH 不要記錄 404 錯誤。

<?xml version="1.0"?>
<configuration>
  ...

  <elmah>
  ...

  <errorFilter>
  <test>
  <equal binding="HttpStatusCode" value="404" type="Int32" />
  </test>
  </errorFilter>
  </elmah>

  ...
</configuration>

注意

別忘了,若要使用錯誤篩選,您必須註冊 ErrorFilterModule HTTP 模組。

<equal><test> 段內的元素稱為判斷提示。 如果判斷提示評估為 true,則會從 ELMAH 的記錄檔篩選錯誤。 還有其他可用的判斷提示,包括: <greater><greater-or-equal><not-equal> 、、 <lesser><lesser-or-equal> 等等。 您也可以使用 <and><or> 布林運算子來結合判斷提示。 此外,您甚至可以將簡單的 JavaScript 運算式包含為判斷提示,或在 C# 或 Visual Basic 中撰寫您自己的判斷提示。

如需 ELMAH 錯誤篩選功能的詳細資訊,請參閱ELMAH 文章中的錯誤篩選一節

摘要

ELMAH 提供簡單且功能強大的機制,可在 ASP.NET Web 應用程式中記錄錯誤。 如同 Microsoft 的健康情況監視系統,ELMAH 可以將錯誤記錄至資料庫,並可透過電子郵件將錯誤詳細資料傳送給開發人員。 不同于健康情況監視系統,ELMAH 包含更多錯誤記錄資料存放區的現成支援,包括:Microsoft SQL Server、Microsoft Access、Oracle、XML 檔案和其他數個。 此外,ELMAH 提供內建機制,可檢視錯誤記錄檔,以及網頁中特定錯誤的詳細資料。 elmah.axd 頁面 elmah.axd 也可以將錯誤資訊轉譯為 RSS 摘要或逗號分隔值檔案, (CSV) ,您可以使用 Microsoft Excel 讀取。 您也可以指示 ELMAH 使用宣告式或程式設計判斷提示來篩選記錄中的錯誤。 ELMAH 可以搭配 1.x 版應用程式 ASP.NET 使用。

每個已部署的應用程式都應該有一些機制可自動記錄未處理的例外狀況,並將通知傳送給開發小組。 這是否使用健康情況監視來完成,或 ELMAH 是次要的。 換句話說,無論您使用健康情況監視還是 ELMAH,這並不重要;評估這兩個系統,然後選擇最符合您需求的系統。 基本上很重要的是,某些機制會就地記錄生產環境中的未處理的例外狀況。

快樂的程式設計!

深入閱讀

如需本教學課程中討論之主題的詳細資訊,請參閱下列資源: