欢迎访问 生活随笔!

凯发ag旗舰厅登录网址下载

当前位置: 凯发ag旗舰厅登录网址下载 > 编程语言 > >内容正文

asp.net

asp.net页面出错时的处理方法 -凯发ag旗舰厅登录网址下载

发布时间:2025/1/21 18 豆豆
凯发ag旗舰厅登录网址下载 收集整理的这篇文章主要介绍了 asp.net页面出错时的处理方法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1.第一种做法,在web.config文件配置

<system.web>
      
<customerrors defaultredirect="~/errorpage.aspx" 
                     mode
="remoteonly">
      
customerrors>
system.web>

 

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

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

代码 protected void application_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/")yearmonthday;
                    
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.transfer(
"~/errorpage.aspx"); //转到显示友好错误的页面

        }

然后在errorpage.aspx页面显示一些好友的提示信息.

3.第三种做法:在page_error事件里面处理

代码         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/")yearmonthday;
                    
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");
            
        }

 

我经常的做法是使用第二种方法,然后再写一个发送短信的方法(调用移动的短信借口),这样的话程序出错的时候,管理员可以收到程序出错的信息。

总结

以上是凯发ag旗舰厅登录网址下载为你收集整理的asp.net页面出错时的处理方法的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图