將不確定變為確實~請自己搞清楚異常頁面的設置方法(網上那些資料說的基本都有問題!)


回到目錄

這篇文件需要搞清楚兩個概念:

1 怎么去設置友好的異常頁面

2 如何去收集頁面產生的異常信息

我們在網站開發時,一般需要設置兩個異常頁面,如404頁面(資源未找到),500頁面(系統內部錯誤,可能由某語句導致的某種異常),而如何去開啟這個異常功能網上說法不少,但感覺把問題搞復雜,以及自己不太確實的答案很多,現在我就具體說一下:

首先,兩個問題是獨立的,第一,友好的導演頁面的設置,第二如何去收集產生異常的信息

第一 友好的導演頁面的設置方法:

打開web.config文件,添加如下代碼即可,其它文件不需要設置

1 <customErrors mode="On" defaultRedirect="Error">
2       <error statusCode="404" redirect="Error" />
3       <error statusCode="500" redirect="~/Error/HttpError" />
4 </customErrors>

這里需要說清楚的是:mode="On",表示開啟下面的錯誤異常友好頁面;mode="Off",關閉下面的異常友好頁面,即顯示出具體的操作異常(一般在網站開發階段用),mode="RemoteOnly",在服務器上開始錯誤詳細信息,而在客戶端關閉這個詳細信息(一般網站上線后選用)。

到目前為止,就第一個問題就OK了。

 

現在看第二個問題,如何去收集產生異常的信息

我們以MVC3為例來說一下,有兩種設置方法,第一對於某個controller或action的設置,可以在它上面加一個[HandlerErrorr]的特性,第二是對全局的所以controller的設置,可以在global.ascx里添加如下代碼:

1        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
2         {
3             filters.Add(new HandleErrorAttribute());
4         }
5 
6        protected void Application_Start()
7         {
8               RegisterGlobalFilters(GlobalFilters.Filters);
9         }

值得慶幸的是MVC3本身的global.ascx已經集成了這部分的代碼,而如果希望輸出或者記錄這些異常信息,也可以顯示,現在我們將異常信息輸出到頁面上,看一下吧。

 1 @model System.Web.Mvc.HandleErrorInfo
 2 @{
 3     ViewBag.Title = "錯誤";
 4 }
 5 <h2>
 6     一個一般性的錯誤發生了</h2>
 7 @if (Model != null)
 8 {
 9     <p>
10         錯誤 名稱:@Model.Exception.GetType().Name<br />
11         錯誤發生目錄: @Model.ControllerName
12         <br />
13         錯誤發生文件:@Model.ActionName</p>
14     <p>
15         錯誤詳細:</p>
16     <p>@Model.Exception.Message</p>
17 }

怎么樣,夠簡單吧,聰明的你肯定想到了什么,對,如果您想記錄這些信息,直接再寫一個filter去到global.ascx里注冊一下就OK了,呵呵。

 


回到目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM