ASP.NET错误处理的两种方案_AX
2008-08-05 17:38
666 查看
网页出错,在所难免,如何处理,方案任选.
一般页面出错后,我们的处理方法一般分为三步:业务逻辑→写入日志→跳转到默认页或指定页
【方案一】
1.在web.config添加一个节点,指定跳转到的默认页.mode为RemoteOnly表示本地报黄页,其它用户跳转.
<system.web>
<customErrors mode="On" defaultRedirect="default.aspx">
</customErrors>
</system.web>
2.在Global.asax中添加错误处理
void Application_Error(object sender, EventArgs e)
{
//在出现未处理的错误时运行的代码
//业务处理
//写日志,下面是一个例子,建议使用第三方控件Log4Net
try
{
using (System.IO.StreamWriter sw = System.IO.File.AppendText("D:\\AX.txt"))
{
sw.WriteLine(Server.GetLastError().InnerException.Message);
sw.WriteLine(Server.GetLastError().InnerException.StackTrace);
sw.Flush();
}
}
catch (Exception)
{
}
}
3.如果某个Page出错后需要跳转到指定页,重写Page的AddParsedSubObject方法,
以保证页面加载最开始为Errorpage属性赋值,其属性依赖于第一步中的mode="On",
不确定mode为RemoteOnly是否可以
(跳转页后面会带系统默认的参数aspxerrorpath=...)
懒人可以写在Page_Load方法的第一句话中,该方法之前出错将会使用第二步中的处理方式.我是懒人...
protected override void AddParsedSubObject(object obj)
{
ErrorPage = "Log4Net.aspx";
base.AddParsedSubObject(obj);
}
【追加】还可以在页面前端加Attribute:ErrorPage
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="OnErrorTest.aspx.cs" Inherits="OnErrorTest" ErrorPage="~/AX.aspx" %>
【方案二】
1.在Global.asax中添加错误处理,并指定默认页.
void Application_Error(object sender, EventArgs e)
{
//在出现未处理的错误时运行的代码
//业务处理
//写日志,下面是一个例子,建议使用第三方控件Log4Net
try
{
using (System.IO.StreamWriter sw = System.IO.File.AppendText("D:\\AX.txt"))
{
//Server.GetLastError().InnerException.ToString()是异常的详细内容
sw.WriteLine(Server.GetLastError().InnerException.ToString());
sw.Flush();
}
}
finally
{
//跳转到默认页
Server.Transfer("Default.aspx");
}
}
2.如果某个Page出错后需要跳转到指定页
void Page_Error(object sender, EventArgs e)
{
//业务处理
//写日志
//跳转到指定页
//Server.Transfer("Log4Net.aspx");
//或
//Response.Redirect("Log4Net.aspx");
//清除错误,如果执行了上面的跳转页,将永远不会执行到这句话
//如果不清除,就会执行Global.asax的Application_Error()方法
//Server.ClearError();
}
推荐使用方案一,因为可以在web.config修改跳转的默认值
一般页面出错后,我们的处理方法一般分为三步:业务逻辑→写入日志→跳转到默认页或指定页
【方案一】
1.在web.config添加一个节点,指定跳转到的默认页.mode为RemoteOnly表示本地报黄页,其它用户跳转.
<system.web>
<customErrors mode="On" defaultRedirect="default.aspx">
</customErrors>
</system.web>
2.在Global.asax中添加错误处理
void Application_Error(object sender, EventArgs e)
{
//在出现未处理的错误时运行的代码
//业务处理
//写日志,下面是一个例子,建议使用第三方控件Log4Net
try
{
using (System.IO.StreamWriter sw = System.IO.File.AppendText("D:\\AX.txt"))
{
sw.WriteLine(Server.GetLastError().InnerException.Message);
sw.WriteLine(Server.GetLastError().InnerException.StackTrace);
sw.Flush();
}
}
catch (Exception)
{
}
}
3.如果某个Page出错后需要跳转到指定页,重写Page的AddParsedSubObject方法,
以保证页面加载最开始为Errorpage属性赋值,其属性依赖于第一步中的mode="On",
不确定mode为RemoteOnly是否可以
(跳转页后面会带系统默认的参数aspxerrorpath=...)
懒人可以写在Page_Load方法的第一句话中,该方法之前出错将会使用第二步中的处理方式.我是懒人...
protected override void AddParsedSubObject(object obj)
{
ErrorPage = "Log4Net.aspx";
base.AddParsedSubObject(obj);
}
【追加】还可以在页面前端加Attribute:ErrorPage
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="OnErrorTest.aspx.cs" Inherits="OnErrorTest" ErrorPage="~/AX.aspx" %>
【方案二】
1.在Global.asax中添加错误处理,并指定默认页.
void Application_Error(object sender, EventArgs e)
{
//在出现未处理的错误时运行的代码
//业务处理
//写日志,下面是一个例子,建议使用第三方控件Log4Net
try
{
using (System.IO.StreamWriter sw = System.IO.File.AppendText("D:\\AX.txt"))
{
//Server.GetLastError().InnerException.ToString()是异常的详细内容
sw.WriteLine(Server.GetLastError().InnerException.ToString());
sw.Flush();
}
}
finally
{
//跳转到默认页
Server.Transfer("Default.aspx");
}
}
2.如果某个Page出错后需要跳转到指定页
void Page_Error(object sender, EventArgs e)
{
//业务处理
//写日志
//跳转到指定页
//Server.Transfer("Log4Net.aspx");
//或
//Response.Redirect("Log4Net.aspx");
//清除错误,如果执行了上面的跳转页,将永远不会执行到这句话
//如果不清除,就会执行Global.asax的Application_Error()方法
//Server.ClearError();
}
推荐使用方案一,因为可以在web.config修改跳转的默认值
相关文章推荐
- ASP.NET页面错误处理及邮件发送简易方案
- ASP.NET页面错误处理及邮件发送简易方案
- asp.net 发布到IIS中出现”处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”“错误的解决方法
- ASP.NET中处理自定义错误的最佳方式
- ASP.NET的错误处理机制
- ASP.net错误处理(错误跳转页 webconfig)
- ASP.NET的错误处理机制
- ASP.NET定制简单的错误处理页面
- asp.net + ajax出现数据回传错误的处理
- asp.net 可配置的自定义错误处理DLL
- asp.net错误处理总则
- asp.net错误处理封装
- 对"ASP.NET的错误类型及错误处理方式"的补充
- ASP.NET错误处理和程序优化
- ASP.NET的错误处理机制
- asp.net访问access 发生了未处理的异常 "操作必须使用一个可更新的查询"错误
- asp.net 定制简单的错误处理页面
- ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式
- ASP.NET中的错误处理支持
- ASP.NET的错误处理机制