.net页面出错时的处理方法

 

【网上购物论坛】-IT泡吧![Www.itpob.Cn]网上购物社区! - Powered by Discuz!
http://www.itpob.cn/

 

一种做法,在Web.config文件配置

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> < system.web >
      
< customErrors defaultRedirect = " ~/ErrorPage.aspx "  
                     mode
= " RemoteOnly " >
      
</ customErrors >
</ system.web >

 

  defaultRedirect属性用来指明当aspx页面发生了未处理错误时导向的页面; 但Asp.net使用重定向机制来重新导航错误页面,这样错误信息就会丢失,也就是说我们用Server.GetLastError()获得的Exception对象始终是空的。虽然可以提示用户出错,并提供一个返回出错页面的链接,却不能给管理员一个很好的错误提示。

2.第二种做法:在global文件里的Application_Error方法中处理

 

代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->          private   void  Page_Load( object  sender, System.EventArgs e)
        {
            
throw ( new  ArgumentNullException());
        }

        
public   void  Page_Error( object  sender,EventArgs e)
        {
            Exception ex
= Server.GetLastError().GetBaseException();

            
string  errorTime = " 发生时间: " + DateTime.Now.ToString();
            
string  errorAddress = " 发生异常页: " + Request.Url.ToString();
            
string  errorInfo = " 异常信息: " + ex.Message;
            
string  errorSource = " 错误源: " + ex.Source;
            
string  errorTrace = " 堆栈信息: " + ex.StackTrace;

            Server.ClearError();

            System.IO.StreamWriter writer
= null ;
            
try
            {
                
lock ( this )
                {
                    
// 写入日志 
                     string  year = DateTime.Now.Year.ToString();
                    
string  month = DateTime.Now.Month.ToString();
                    
string  day = DateTime.Now.Day.ToString();
                    
string  path = string .Empty;
                    
string  filename = DateTime.Now.ToString( " yyyyMMdd " ) + " .txt " ;
                    path
= Server.MapPath( " ~/Error/ " ) + year + month + day;
                    
if ( ! Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
                    System.IO.FileInfo file
= new  FileInfo(path + " / " + filename);
                    writer
= new  StreamWriter(file.FullName, true ); // 文件不在则创建,true表示追加
                    writer.WriteLine( " 用户IP: " + Request.UserHostAddress);
                    writer.WriteLine(errorTime);
                    writer.WriteLine(errorAddress);
                    writer.WriteLine(errorInfo);
                    writer.WriteLine(errorSource);
                    writer.WriteLine(errorTrace);
                    writer.WriteLine(
" ------------------------------------------- " );

                }
            }
            
finally
            {
                
if (writer != null )
                {
                    writer.Close();
                }
            }

            Server.ClearError();
// 防止错误继续到要被处理的 Application_Error 事件中。
            Response.Redirect( " ~/ErrorPage.aspx " );
            
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值