asp.net|錯誤|網頁 設計網站的時候,不可能我們的網站不出現一點錯誤,常見的“頁面不存在”“頁面運行出錯”等錯誤資訊一般網站多少總是存在的,關鍵是,這些錯誤出現以後,管理員怎樣方便及時的發現它們、盡量減少使用者對網站的不好印象。不管是IIS 4還是IIS 5,我們都可以設定網站的“自訂錯誤資訊”,通過這樣的設定,一些系統預設的比較不友好的錯誤資訊就可以更換為網站管理員自訂的頁面,這對於網站的實用和友好性都大有協助。但是,我們在使用過程中卻發現一個比較不方便的問題,當我們查看網站日誌的時候,我們發現了這些錯誤頁面的出現,但是,卻不能在系統事件查看這些錯誤資訊。而在網站的日誌部分查看這些錯誤資訊又比較麻煩,有沒有辦法可以直接將產生的錯誤資訊象安全日誌一樣儲存在系統日誌部分呢?ASP.NET現在就可以做到。現在,我們一步步學習怎樣實現這個功能。
一、建立EventLog虛擬目錄
實現,我們在我們的網站建立一個名為“EventLog”的虛擬目錄,具體建立方法如下:在Win2000中,開啟“開始”->“程式”->“管理工具”->“Internet資訊服務”,找到建立的網站,郵件點擊選擇“建立”,在彈出的菜單選擇“虛擬目錄”,然後按照嚮導設定即可。
二、修改WEB.CONFIG檔案
我們知道,在WEB.CONFIG檔案中,我們可以象IIS的“自訂錯誤資訊”頁面一樣設定錯誤資訊頁面的位置和錯誤資訊是否顯示等。為了實現本文提到的功能,我們需要適當修改WEB.CONFIG檔案,開啟“customErrors mode”為“ON”,目的是非地電腦使用者只能得到友好(自訂)的錯誤資訊,具體設定如下:
<configuration>
<system.web>
<customErrors mode="On" defaultRedirect="/eventlog/customerrorpage.aspx">
<error statusCode="404" redirect="/eventlog/404Page.aspx"/>
<error statusCode="403" redirect="/eventlog/403page.aspx"/>
</customErrors>
</system.web>
</configuration>
在以上的設定中,我們看到,當404和403錯誤產生的時候,會將頁面轉到剛才我們設定EventLog虛擬目錄的相應頁面。
三、建立其他檔案
為了實驗我們的設定是否成功,首先,我們必須設立一個可以產生錯誤的頁面Default.aspx,這個頁面的代碼如下:
Default.aspx 頁面代碼
<% @Language="VB" %>
<script language="VB" runat=server>
Sub Page_Load(Sender As Object, E As EventArgs)
If IsPostBack Then
'定義變數
dim x as integer
dim y as integer
dim z as integer
Public Sub Application_OnError(Sender as Object, E as EventArgs)
'捕捉錯誤
dim LastError as Exception = Server.GetLastError()
Dim ErrMessage as String = LastError.toString()
'這裡設定日誌的名字為“MyLog”
Dim LogName As String = "MyLog"
Dim Message As String = "Url " & Request.Path & " Error: " & ErrMessage
' 如果日誌不存在,建立一個
If (Not EventLog.SourceExists(LogName)) Then
EventLog.CreateEventSource(LogName, LogName)
End if