設計網站的時候,不可能我們的網站不出現一點錯誤,常見的“頁面不存在”“頁面運行出錯”等錯誤信息一般網站多少總是存在的,關鍵是,這些錯誤出現以後,管理員怎樣方便及時的發現它們、盡量減少用戶對網站的不好印象。不管是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
x = 1
y = 0
'產生錯誤
z = x/y
End Sub
</script>
<html>
<head>
</head>
<body>
<form method="post" action="eventlog.aspx" name="form1" id="number">
<asp:Button id="abutton" type="submit" text="點擊產生錯誤" runat="server" />
</form>
</body>
</html>