欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【ASP.NET全局异常处理浅析】,下面是详细的分享!
ASP.NET全局异常处理浅析
在我们写程序时偶尔会由于疏忽导致有些异常没有进行处理。如果将异常详细信息提示给用户会带来不安全因素,如果不提示详细信息又会给用户报告异常带来麻烦。虽然可以通过配置customErrors mode来实现只有管理员可以查看错误,但发现问题的时间可能会比较长。通过全局异常处理就可以在异常发生时立即记录异常,或直接发送邮件向管理员报告,以在最快的速度发现并处理异常。
要为ASP.NET应用程序添加全局异常处理主要是添加HttpApplication的Error事件的处理。这与在BeginRequest事件中进行URL重写方法类似。先建一个继承System.Web.IHttpModule的类。然后添加Init方法和ShowError方法。
|
以下为引用的内容: namespace Snowdream |
然后还需要配置web.config的httpModules使之生效。
我现在比较喜欢的做法是将异常的详细信息记录在数据库中,然后返回一个编号,再将页面重定向到自己写的错误提示页,将这个编号提示给用户,用户如果要报告错误只需提供该错误编号,管理员就能在后台中找到错误的详细信息并进行修改。
下面说2个我在做全局异常处理时碰到的问题及我的解决方案:
第一个是获取异常hResult,由于是私有属性不能直接访问,解决方法是通过(int)System.Runtime.InteropServices.Marshal.GetHRForException(exception)来获取;
第二个问题是记录了很多不是由于ASP.NET应用程序引发的错误,比如用户键入一个错误的URL,异常处理系统会记录一个“文件不存在。”的错误,而这些错误记录不仅不能真正反映出ASP.NET应用程序的异常反而会给管理员带来更多麻烦。我的解决方法是通过判断if(exception is System.Web.HttpException)来过滤这些HttpException。
以上所分享的是关于ASP.NET全局异常处理浅析,下面是编辑为你推荐的有价值的用户互动:
相关问题:如何在.NET程序中使用异常处理模块
答:作为一名程序开发员,我的时间是有限的,所以任何能够节约时间的事情都非常有价值。从这方面来说,我是微软企业库的忠实粉丝。毕竟,谁会拒绝免费的代码呢?在以前的专栏中,我阐述了有关通过企业库进行登录的问题。今天,我将阐述如何在.NET程... >>详细
相关问题:asp.net的异常处理的finally请教
答:finally表示程序都无论怎么运行,都必须执行的语句。 可以和catch一起使用 何时使用:当操作非托管资源时,一般都会使用。何为非托管资源,比如数据库连接,文件读取器,这些都是非托管资源,可以统一在finally中奖资源释放掉。 >>详细
相关问题:ASP.NET我想在catch块里处理异常的Message信息,怎...
答:try { //.......你的代码 } catch(Exception ex) { string message= ex.ToString().Replace("\"", "");//这样就能去掉双引号了 Response.Write(message); } 这样就可以了 >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
