当前位置: 移动技术网 > IT编程>开发语言>.net > ASP.NET 全局异常处理的方法

ASP.NET 全局异常处理的方法

2018年09月12日  | 移动技术网IT编程  | 我要评论

铭天传奇,刘谦韩国魔术揭秘,佣兵天下后传

在我们写程序时偶尔会由于疏忽导致有些异常没有进行处理。如果将异常详细信息提示给用户会带来不安全因素,如果不提示详细信息又会给用户报告异常带来麻烦。虽然可以通过配置customerrors mode来实现只有管理员可以查看错误,但发现问题的时间可能会比较长。通过全局异常处理就可以在异常发生时立即记录异常,或直接发送邮件向管理员报告,以在最快的速度发现并处理异常。

要为asp.net应用程序添加全局异常处理主要是添加httpapplication的error事件的处理。这与在beginrequest事件中进行url重写方法类似。先建一个继承system.web.ihttpmodule的类。然后添加init方法和showerror方法。

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)
        {

            //在这里进行异常处理

        }
    }
}
然后还需要配置web.config的httpmodules使之生效.

我现在比较喜欢的做法是将异常的详细信息记录在中,然后返回一个编号,再将页面重定向到自己写的错误提示页,将这个编号提示给用户,用户如果要报告错误只需提供该错误编号,管理员就能在后台中找到错误的详细信息并进行修改。

下面说2个我在做全局异常处理时碰到的问题及我的解决方案

第一个是获取异常hresult,由于是私有属性不能直接访问,解决方法是通过(int)system.runtime.interopservices.marshal.gethrforexception(exception)来获取

第二个问题是记录了很多不是由于asp.net应用程序引发的错误,比如用户键入一个错误的url,异常处理会记录一个“文件不存在。”的错误,而这些错误记录不仅不能真正反映出asp.net应用程序的异常反而会给管理员带来更多麻烦。我的解决方法是通过判断if(exception is system.web.httpexception)来过滤这些httpexception.


 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网