C# Global.asax文件詳解
C#語言有很多值得學(xué)習(xí)的地方,這里我們主要介紹C# Global.asax文件,包括介紹defaultRedirect屬性的值中引用默認(rèn)的錯誤頁等方面。
本節(jié)演示如何修改 C# Global.asax文件,以便從不調(diào)用 Server.ClearError。因此,錯誤在作為捕獲錯誤的最后一點(diǎn)的 Web.config 文件中進(jìn)行處理。
從上一個示例中打開 C# Global.asax文件。將 Server.ClearError 行注釋掉,以便確保錯誤出現(xiàn)在 Web.config 文件中。將所作更改保存到 Global.asax 中。
代碼看起來應(yīng)類似如下形式:
- 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 屬性中的文件路徑,以便它引用相關(guān)的 Web 服務(wù)器和應(yīng)用程序名稱。因?yàn)樵诖思墑e捕獲的錯誤會發(fā)送到默認(rèn)的錯誤頁,所以,必須創(chuàng)建一個名為 ErrorStatus.htm 的錯誤頁。請記住,您要使用此方法來控制向用戶呈現(xiàn)的內(nèi)容,因此本示例使用 .htm頁作為錯誤頁。將以下代碼添加到 ErrorStatus.htm 中:
- custom Error page!
- You have been redirected here from the <customErrors>
- section of the
- Web.config file.
若要測試該代碼,請保存這些文件,生成項(xiàng)目,然后在瀏覽器中查看 AppEvent.aspx。請注意,在引發(fā)錯誤時,您將被重定向到ErrorStatus.htm 頁。
盡管您可在部分中defaultRedirect屬性的值中引用默認(rèn)的錯誤頁,但是您還可根據(jù)引發(fā)的 HTTP 錯誤代碼指定要重定向到的特定頁。 子元素允許使用此選項(xiàng)。
請注意, 部分包括設(shè)置為 On 的 mode 屬性。mode 屬性用于控制錯誤重定向發(fā)生的方式。例如,如果您正開發(fā)應(yīng)用程序,則很可能希望查看實(shí)際的 ASP.NET 錯誤信息,并且不希望被重定向到更用戶友好的錯誤頁。mode 屬性包括以下設(shè)置:
◆on:未被處理的異常將用戶重定向到指定的 defaultRedirect 頁。此模式主要用于生產(chǎn)。
◆off:用戶收到異常信息而不是被重定向到 defaultRedirect 頁。此模式主要用于開發(fā)。
◆remoteonly:只有在本地計(jì)算機(jī)上訪問該站點(diǎn)的用戶(通過使用 localhost)才能收到異常信息。所有其他用戶都被重定向到defaultRedirect 頁。此模式主要用于調(diào)試。
疑難解答
在 Windows 2000 和 Windows XP 上的默認(rèn)安裝中,ASP.NET 在輔助進(jìn)程中運(yùn)行 Web 應(yīng)用程序代碼。此進(jìn)程的標(biāo)識默認(rèn)為名為 ASPNET 的無特權(quán)本地帳戶。在 ASP.NET 的 beta 版中,該進(jìn)程的標(biāo)識是 System,這是一個功能強(qiáng)大的管理員帳戶,擁有許多計(jì)算機(jī)特權(quán)。以上介紹C# Global.asax文件。
【編輯推薦】