当前位置:
凯发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旗舰厅登录网址下载推荐给好友。
- 上一篇:
- 下一篇: