C# Global.asax文件詳解
C#語言有很多值得學習的地方,這里我們主要介紹C# Global.asax文件,包括介紹defaultRedirect屬性的值中引用默認的錯誤頁等方面。
本節演示如何修改 C# Global.asax文件,以便從不調用 Server.ClearError。因此,錯誤在作為捕獲錯誤的最后一點的 Web.config 文件中進行處理。
從上一個示例中打開 C# Global.asax文件。將 Server.ClearError 行注釋掉,以便確保錯誤出現在 Web.config 文件中。將所作更改保存到 Global.asax 中。
代碼看起來應類似如下形式:
- using System.Diagnostics;
- protected void Application_Error(object sender, EventArgs e)
- {
- Exception objErr = Server.GetLastError().GetBaseException();
- string err ="Error Caught in Application_Error event\n" +
- "Error in:" + Request.Url.ToString() +
- "\nError Message:"+ objErr.Message.ToString() +
- "\nStack Trace:"+ objErr.StackTrace.ToString();
- EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
- //Server.ClearError();
- //additional actions...
- }
必須修改 defaultRedirect 屬性中的文件路徑,以便它引用相關的 Web 服務器和應用程序名稱。因為在此級別捕獲的錯誤會發送到默認的錯誤頁,所以,必須創建一個名為 ErrorStatus.htm 的錯誤頁。請記住,您要使用此方法來控制向用戶呈現的內容,因此本示例使用 .htm頁作為錯誤頁。將以下代碼添加到 ErrorStatus.htm 中:
- custom Error page!
- You have been redirected here from the <customErrors>
- section of the
- Web.config file.
若要測試該代碼,請保存這些文件,生成項目,然后在瀏覽器中查看 AppEvent.aspx。請注意,在引發錯誤時,您將被重定向到ErrorStatus.htm 頁。
盡管您可在部分中defaultRedirect屬性的值中引用默認的錯誤頁,但是您還可根據引發的 HTTP 錯誤代碼指定要重定向到的特定頁。 子元素允許使用此選項。
請注意, 部分包括設置為 On 的 mode 屬性。mode 屬性用于控制錯誤重定向發生的方式。例如,如果您正開發應用程序,則很可能希望查看實際的 ASP.NET 錯誤信息,并且不希望被重定向到更用戶友好的錯誤頁。mode 屬性包括以下設置:
◆on:未被處理的異常將用戶重定向到指定的 defaultRedirect 頁。此模式主要用于生產。
◆off:用戶收到異常信息而不是被重定向到 defaultRedirect 頁。此模式主要用于開發。
◆remoteonly:只有在本地計算機上訪問該站點的用戶(通過使用 localhost)才能收到異常信息。所有其他用戶都被重定向到defaultRedirect 頁。此模式主要用于調試。
疑難解答
在 Windows 2000 和 Windows XP 上的默認安裝中,ASP.NET 在輔助進程中運行 Web 應用程序代碼。此進程的標識默認為名為 ASPNET 的無特權本地帳戶。在 ASP.NET 的 beta 版中,該進程的標識是 System,這是一個功能強大的管理員帳戶,擁有許多計算機特權。以上介紹C# Global.asax文件。
【編輯推薦】