Asp.net中网站级异常捕获
生活随笔
收集整理的這篇文章主要介紹了
Asp.net中网站级异常捕获
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近在公司某管理系統中,用了一些獨立的模塊,在這些類的實現中,錯誤是直接拋出異常的,我想這是我們通常的做法。然而,問題也來了,由于自己在Asp.net頁面中沒有去捕獲這些異常,并且多處頁面中都使用了這些類,于是在多個頁面都會出現不友好的錯誤提示信息。
怎么辦?又不想一處一處修改代碼,既費時又費力,這樣編程不就變成了體力勞動,從而失去了樂趣。 這時讓我想起了自定義錯誤頁,于是Google,終于找到了答案。
1、配置web.config:
<customErrors?mode="RemoteOnly"?defaultRedirect="ErrorPage.aspx"?redirectMode="ResponseRewrite"/> ?關鍵是redirectMode屬性,該屬性默認為ResponseRedirect,由于被Redirect了,異常也就被忽略了,使你無法捕獲到異常。這里羅嗦一句:因為出錯前后被認為是兩次請求,我們知道http協議是一種無狀態的協議,第二次請求忽略了第一次的異常也就不奇怪了。于是有人用了Session或Application來保存異常,這是不可取的。正確的做法是使用“ResponseRewrite"。2、輸出異常信息:
?我們知道網站出錯時,會自動導向我們的ErrorPage.apx頁面,在ErrorPage.aspx中如何訪問這個異常呢?答案是:Server.GetLastError(),當然有可能是Server.GetLastError().InnerException。這要具體分析了。
if(Server.GetLastError()!=null){???Response.Write(Server.GetLastError().Message);
}
順便說一下:
Asp.net MVC中就簡單多了,框架自帶了一個Error.aspx,異常保存在Model.Exception中,并且Web.config中也為我們配置好了。
在下從去年以來開發的網頁就基本是MVC的了,結構清晰,擴展方便,清涼的HTML代碼輸出。有空看看MVC的源代碼還是很有幫助的。轉載于:https://www.cnblogs.com/zhangchenliang/archive/2011/04/19/2021257.html
總結
以上是生活随笔為你收集整理的Asp.net中网站级异常捕获的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为不同目录设置Forms身份验证
- 下一篇: 如何在dva的effects中实现回调