在ASP.NET中的全局異常處理_.Net教程
推薦:淺析asp.net 和 access 聯(lián)合開(kāi)發(fā)的分頁(yè)類(lèi)以下為引用的內(nèi)容: using System; using System.Collections.Generic; using System.Text; using System.Data; namespace pager { public class Pager
在我們寫(xiě)程序時(shí)偶爾會(huì)由于疏忽導(dǎo)致有些異常沒(méi)有進(jìn)行處理。如果將異常詳細(xì)信息提示給用戶(hù)會(huì)帶來(lái)不安全因素,如果不提示詳細(xì)信息又會(huì)給用戶(hù)報(bào)告異常帶來(lái)麻煩。雖然可以通過(guò)配置customErrors mode來(lái)實(shí)現(xiàn)只有管理員可以查看錯(cuò)誤,但發(fā)現(xiàn)問(wèn)題的時(shí)間可能會(huì)比較長(zhǎng)。通過(guò)全局異常處理就可以在異常發(fā)生時(shí)立即記錄異常,或直接發(fā)送郵件向管理員報(bào)告,以在最快的速度發(fā)現(xiàn)并處理異常。
要為ASP.NET應(yīng)用程序添加全局異常處理主要是添加HttpApplication的Error事件的處理。這與在BeginRequest事件中進(jìn)行URL重寫(xiě)方法類(lèi)似。先建一個(gè)繼承System.Web.IHttpModule的類(lèi)。然后添加Init方法和ShowError方法。
以下為引用的內(nèi)容:
namespace Snowdream
{
public class HttpModule : System.Web.IHttpModule
{
public void Init(System.Web.HttpApplication context)
{
context.Error = new EventHandler(ShowError);
}
private void ShowError(object sender, EventArgs e)
{
//在這里進(jìn)行異常處理
}
}
}
然后還需要配置web.config的httpModules使之生效.
我現(xiàn)在比較喜歡的做法是將異常的詳細(xì)信息記錄在數(shù)據(jù)庫(kù)中,然后返回一個(gè)編號(hào),再將頁(yè)面重定向到自己寫(xiě)的錯(cuò)誤提示頁(yè),將這個(gè)編號(hào)提示給用戶(hù),用戶(hù)如果要報(bào)告錯(cuò)誤只需提供該錯(cuò)誤編號(hào),管理員就能在后臺(tái)中找到錯(cuò)誤的詳細(xì)信息并進(jìn)行修改。
下面說(shuō)2個(gè)我在做全局異常處理時(shí)碰到的問(wèn)題及我的解決方案
第一個(gè)是獲取異常hResult,由于是私有屬性不能直接訪(fǎng)問(wèn),解決方法是通過(guò)(int)System.Runtime.InteropServices.Marshal.GetHRForException(exception)來(lái)獲取
第二個(gè)問(wèn)題是記錄了很多不是由于ASP.NET應(yīng)用程序引發(fā)的錯(cuò)誤,比如用戶(hù)鍵入一個(gè)錯(cuò)誤的URL,異常處理系統(tǒng)會(huì)記錄一個(gè)“文件不存在。”的錯(cuò)誤,而這些錯(cuò)誤記錄不僅不能真正反映出ASP.NET應(yīng)用程序的異常反而會(huì)給管理員帶來(lái)更多麻煩。我的解決方法是通過(guò)判斷if(exception is System.Web.HttpException)來(lái)過(guò)濾這些HttpException。
分享:在ASP.Net Ajax中調(diào)用WebService今天我想實(shí)現(xiàn)利用JavaScript調(diào)用WebService我首先就想到了ASP.Net Ajax 因?yàn)槲④浀臇|西用著方便,我從網(wǎng)上看了看,這東西好多人都寫(xiě)了,我就從官方找了個(gè)Demo下了看看源代碼,感覺(jué)沒(méi)什么特殊的
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無(wú)刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶(hù)端IP常見(jiàn)代碼存在的偽造IP問(wèn)題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(kù)(連接字符串的配置及獲取)
- asp.net頁(yè)面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過(guò)程實(shí)現(xiàn)分頁(yè)示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- GridView中動(dòng)態(tài)設(shè)置CommandField是否可用或可見(jiàn)的小例子
- c#生成圖片縮略圖的類(lèi)(2種實(shí)現(xiàn)思路)
- IE10下Gridview后臺(tái)設(shè)置行高不起作用解決方法
- C#使用Panel實(shí)現(xiàn)窗體動(dòng)態(tài)側(cè)邊欄
- 怎樣在ASP.net中做網(wǎng)站訪(fǎng)問(wèn)量統(tǒng)計(jì)
- 在ASP.NET Atlas中調(diào)用Web Service
- ASP.NET 設(shè)計(jì)中的 N 個(gè)技巧
- 添加GridView/DataGrid單擊一行服務(wù)器事件
- 編程技巧OOPs:復(fù)制構(gòu)造函數(shù)
- ASP.NET如何應(yīng)用XML技術(shù)實(shí)現(xiàn)Web報(bào)表打印
- 相關(guān)鏈接:
- 教程說(shuō)明:
.Net教程-在ASP.NET中的全局異常處理
。