web.config中節點配置的實戰應用
當我們完成了web開發,并將站點部署到服務器上以后,難免會因為各種原因,碰到網站報錯的問題。而當我們打開服務器鏈接時,結果一般是這樣的:

而打開本地鏈接是這樣的:

這個顯示結果,就是web.config中<customErrors>節點配置造成的。
<customErrors>節點用于定義一些自定義錯誤信息的信息。此節點有Mode和defaultRedirect兩個屬性,其中defaultRedirect屬性是一個可選屬性,表示應用程序發生錯誤時重定向到的默認URL,如果沒有指定該屬性則顯示一般性錯誤。Mode屬性是一個必選屬性,它有三個可能值,它們所代表的意義分別如下:
Mode 說明On 表示在本地和遠程用戶都會看到自定義錯誤信息。Off 禁用自定義錯誤信息,本地和遠程用戶都會看到詳細的錯誤信息。RemoteOnly 這個是缺省值,表示本地用戶將看到詳細錯誤信息,而遠程用戶將會看到自定義錯誤信息。
這里有必要說明一下本地用戶和遠程用戶的概念。當我們訪問asp.net應用程時所使用的機器和發布asp.net應用程序所使用的機器為同一臺機器時稱為本地用戶,反之則稱之為遠程用戶。所以在默認 Mode=” RemoteOnly”時,我們在服務器打開服務器鏈接,也會看到以下頁面:
在開發調試階段為了便于查找錯誤Mode屬性建議設置為Off,而在部署階段應將Mode屬性設置為On或者RemoteOnly,以避免這些詳細的錯誤信息暴露了程序代碼細節從而引來黑客的入侵。我們先配置<customErrors>如下:<customErrors mode="RemoteOnly" defaultRedirect="ErrorPage.html" />并在根目錄下添加HTML頁面 ErrorPage.html:<!DOCTYPE html><html><head> <meta charset="utf-8" /> <title></title></head><body> This is ErrorPage!</body></html>
這時如果本地運行報錯,將看到以下頁面:

遠程訪問時看到的效果:

如果我們將customErrors的Mode屬性設置為“On”本地運行和遠程訪問都會看到如下效果:

如果將customErrors的Mode屬性設置為“Off”本地運行和遠程訪問都會看到如下效果:

另外,在<customErrors>節點下還包含有<error>子節點,這個節點主要是根據服務器的HTTP錯誤狀態代碼而重定向到我們自定義的錯誤頁面,注意要使<error>子節點下的配置生效,必須將<customErrors>節點節點的Mode屬性設置為“On”。
例子如下:
<customErrors mode="On" defaultRedirect=" ErrorPage.html ">
<error statusCode="403" redirect="403.htm" />
<error statusCode="404" redirect="404.htm" />
</customErrors>
在上面的配置中如果用戶訪問的頁面不存在就會跳轉到404.htm頁面,如果用戶沒有權限訪問請求的頁面則會跳轉到403.htm頁面,403.htm和404.htm頁面都是我們自己添加的頁面,我們可以在頁面中給出友好的錯誤提示。
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















