ASP.NET错误处理的三种方式

通过从网上查找资料,总结下来,ASP.NET提供的错误处理的方式有三种:1、OnError事件;2、Application_Error事件;3、web.config配置。感兴趣的童鞋可以试试看~


前两个比较类似,可以捕获异常,并进行错误页跳转等,只是放置位置不同,OnError事件写在web页面中,Application_Error事件写在Global文件中,很明显,控制范围也不同。下面给出一个错误处理的例子供参考(来源:http://www.jb51.net/article/40588.htm)

        void Application_Error(object sender, EventArgs e)
        {
            // 在出现未处理的错误时运行的代码 
            Exception ex = Server.GetLastError().GetBaseException();
            StringBuilder str = new StringBuilder();
            str.Append("\r\n" + DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss"));
            str.Append("\r\n.客户信息:");


            string ip = "";
            if (Request.ServerVariables.Get("HTTP_X_FORWARDED_FOR") != null)
            {
                ip = Request.ServerVariables.Get("HTTP_X_FORWARDED_FOR").ToString().Trim();
            }
            else
            {
                ip = Request.ServerVariables.Get("Remote_Addr").ToString().Trim();
            }
            str.Append("\r\n\tIp:" + ip);
            str.Append("\r\n\t浏览器:" + Request.Browser.Browser.ToString());
            str.Append("\r\n\t浏览器版本:" + Request.Browser.MajorVersion.ToString());
            str.Append("\r\n\t操作系统:" + Request.Browser.Platform.ToString());
            str.Append("\r\n.错误信息:");
            str.Append("\r\n\t页面:" + Request.Url.ToString());
            str.Append("\r\n\t错误信息:" + ex.Message);
            str.Append("\r\n\t错误源:" + ex.Source);
            str.Append("\r\n\t异常方法:" + ex.TargetSite);
            str.Append("\r\n\t堆栈信息:" + ex.StackTrace);
            str.Append("\r\n--------------------------------------------------------------------------------------------------");
            //创建路径 
            string upLoadPath = Server.MapPath("~/log/");//"E:\\log\\";
            if (!Directory.Exists(upLoadPath))
            {
                Directory.CreateDirectory(upLoadPath);
            }
            //创建文件 写入错误 
            File.AppendAllText(upLoadPath + DateTime.Now.ToString("yyyy.MM.dd") + ".log", str.ToString(), System.Text.Encoding.UTF8);
            //处理完及时清理异常 
            Server.ClearError();
            //跳转至出错页面 
            Response.Redirect("Error.html");
        } 


 

第三种方式,web.config中设置customErrors节点,在出错时会跳转到默认页,三种mode的差别见另一篇文章web.config中的<customErrors>节点

<system.web>
<!--<customErrors mode="RemoteOnly" defaultRedirect="~/error.html"/>-->
<customErrors mode="On" defaultRedirect="~/error.html"/>
<!--<customErrors mode="Off" defaultRedirect="~/error.html"/>-->
</system.web>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值