管理 ASP.NET Mobile Web Web 網頁中的調整式錯誤報告

更新:2007 年 11 月

處理 ASP.NET 網頁期間,錯誤會被擲回為例外狀況 (Exception),而且會由 ASP.NET 錯誤處理機制來處理。

本章節提供 ASP.NET 中錯誤報告的概觀,以及這點與包含 Mobile Web 網頁之 ASP.NET 應用程式的關聯。

ASP.NET 錯誤報告的概觀

有幾個錯誤類型可能會發生在要求期間,包括:

  • HTTP 內建項目的錯誤,例如要求一個遺失的檔案

  • 將網頁、使用者控制項或類似檔案編譯到組件時的剖析錯誤

  • 於網頁存留期 (Lifetime) 間在 ASP.NET 中執行 Web 網頁的錯誤

  • 讀取組態檔的錯誤

  • 系統錯誤,例如記憶體不足的情況

ASP.NET 提供數個自訂錯誤報告的功能。

錯誤報告模式

您可以設定應用程式,使其顯示詳細的錯誤訊息 (適用於開發人員)、基本錯誤訊息 (適用於一般使用者),或是自訂的錯誤訊息。您可以調整設定,使應用程式只在用戶端為本機電腦時顯示詳細錯誤。

應用程式層級錯誤

當錯誤發生在要求期間時,ASP.NET 便會引發 Application_Error 事件。Global.asax 檔中的方法可以處理這個事件,並會覆寫錯誤處理行為。

頁面層級錯誤

發生在頁面存留期間的錯誤會引發 Page_Error 事件。此事件的處理常式能夠根據錯誤種類,而執行通知工作或嘗試更正動作,其中包括隱藏錯誤。

自訂錯誤

在 Web.config 檔中,您可以針對發生在 ASP.NET 應用程式內的例外狀況指定一組自訂頁面。當錯誤發生時,ASP.NET 便會檢查應用程式是否設定為顯示自訂錯誤,以及是否有適當的錯誤頁面。如果其中一個為真,ASP.NET 就會重新導入錯誤頁面,傳遞包含原始 URL 的參數。

Mobile Web 應用程式中的調整式錯誤報告概觀

在 Mobile Web 網頁中的錯誤報告運作方式,與在其他任何 ASP.NET 應用程式中的運作方式相同。您也可以使用相同的自訂技巧。然而,在行為上的一些差異,可使 Mobile Web 網頁中的錯誤報告更適合用於各種不同裝置。

裝置特定的格式

錯誤訊息會自動格式化為目標裝置的標記。對於 WML 裝置,這會是 Card Deck。對於 HTML 裝置,這會是 HTML 頁面。

注意事項:

如果您有撰寫自訂錯誤頁面,我們建議您將這些頁面撰寫成 ASP.NET Mobile Web 網頁,如此一來,您的自訂錯誤頁面便可根據每種類型的裝置正確地格式化。

限定的預設錯誤訊息內容

對於所有的行動裝置,內建的錯誤訊息本質上是簡明扼要的,即使是在應用程式設定來顯示詳細錯誤的時候也是如此。錯誤訊息一般包含引發的例外狀況類別和造成例外狀況的方法。然而,當用戶端是桌上型電腦的瀏覽器時,這時會呈現標準的錯誤訊息。

HTTP 回應碼

當 ASP.NET 報告例外狀況時,便會設定 HTTP 回應碼以反映錯誤的性質。瀏覽器可以在回應碼上動作,或顯示包含在回應內容中的錯誤詳細資料。但是,某些行動裝置,尤其是 WML 式的電話,只有在有錯誤的情況下才會顯示回應碼。當這類裝置發生錯誤時,此要求會傳回 HTTP 回應碼 200 以表示成功,但是頁面的內文會包含錯誤訊息。在 HTML 裝置上,此要求會傳回實際的錯誤碼,以便讓伺服器採取適當回應。

調整錯誤報告程序

對於 Mobile Web 網頁,ASP.NET 會使用下列處理程序找出並報告錯誤:

  1. 如果發生應用程式層級錯誤,ErrorHandlerModule 型別的 HTTP 模組會處理該錯誤。(這個模組已自動安裝)。

  2. 當例外狀況在網頁生命週期發生在頁面層級時,ASP.NET 會呼叫網頁的 OnError 方法。因為這個頁面是一個行動網頁,所以會呼叫 MobilePage 中的覆寫實作 (Implementation),該實作則會呼叫所指派之頁面配接器的 HandleError 方法。這個配接器方法可以報告錯誤的詳細資料,並會傳回表示錯誤已經處理的值。如果它沒有這樣做,例外狀況就會繼續進行處理。ASP.NET 會自動使用自訂錯誤網頁。

  3. ASP.NET 會從步驟 1 呼叫這個錯誤處理常式。如果目標裝置是可以呈現 ASP.NET 產生之完整錯誤訊息的 HTML 瀏覽器,這個方法便會結束。

  4. 否則,ASP.NET 便會收集此例外狀況的相關資訊,建立 ErrorFormatterPage 型別之內部定義行動網頁的執行個體 (Instance),將該資料繫結到收集的資料,然後呈現結果。這個網頁會負責產生裝置特定的錯誤訊息。由於例外狀況已經完成處理,因此這個事件方法不會傳回 HTTP 錯誤狀態碼。

請參閱

其他資源

應用程式開發人員手冊

開發 ASP.NET Mobile Web 網頁