谈谈ASP.NET全局异常处理
来源:互联网 发布:系统还原后数据恢复 编辑:程序博客网 时间:2024/06/06 20:03
在我们写程序时偶尔会由于疏忽导致有些异常没有进行处理。如果将异常详细信息提示给用户会带来不安全因素,如果不提示详细信息又会给用户报告异常带来麻烦。
虽然可以通过配置customErrors mode来实现只有管理员可以查看错误,但发现问题的时间可能会比较长。通过全局异常处理就可以在异常发生时立即记录异常,或直接发送邮件向管理员报告,以在最快的速度发现并处理异常。
要为ASP.NET应用程序添加全局异常处理主要是添加HttpApplication的Error事件的处理。这与在BeginRequest事件中进行URL重写方法类似。先建一个继承System.Web.IHttpModule的类。然后添加Init方法和ShowError方法。
01.namespace Snowdream
02.{
03.public class HttpModule : System.Web.IHttpModule
04.{
05.public void Init(System.Web.HttpApplication context)
06.{
07.context.Error += new EventHandler(ShowError);
08.}
09.private void ShowError(object sender, EventArgs e)
10.{
11.//在这里进行异常处理
12.}
13.}
14.}
然后还需要配置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全局异常处理
- asp.net 全局异常处理
- asp.net全局异常处理
- ASP.NET 全局异常处理
- asp.net 全局异常处理
- asp.net mvc全局异常处理
- ASP.NET MVC中全局异常处理
- asp.net全局异常处理_ASP.NET技巧
- 谈ASP.NET全局异常处理与假窗口提示
- ASP.NET Core MVC 中设置全局异常处理方式
- asp.net 程序异常捕获全局处理,生成错误日志
- .net winform全局异常处理
- .net winform全局异常处理
- Asp.net 全局错误处理
- ASP.NET 异常处理
- Asp.net异常处理
- ASP.NET 异常处理
- ASP.NET 异常处理
- 程序员不成熟的特征
- 双队列的两种实现方式
- oracle锁机制
- 我的iphone开发学习笔记(八): 创建NavigationBaseApplication项目
- 电信无线路由猫设置,自动连接wifi,不用wifi pppoe软件拨号
- 谈谈ASP.NET全局异常处理
- Httpmodule和Httphandler
- QQ腾讯登录相关的HTTP协议
- sigh
- C#委托,事件理解入门
- T-Sql语句删除全部存储过程
- iphone游戏之旅第四周
- Asp.net PageBase继承
- 《海棠》-苏轼