ASP.NET 提供三种用于在出现错误时捕获和响应错误的主要方法:Page_Error 事件、Application_Error 事件以及应用程序配置文件 (Web.config)。
这里主要介绍Application_Error 事件的方法,这种方法能完整地显示错误信息。
1、添加Web.config, < system.web>< /system.web>中添加< customErrors mode="ReadOnly" defaultRedirect="ApplicationErroy.aspx" >< /customErrors>节点,
2、添加Global.asax文件,找到Application_Error事件,加入以下代码:
1 //这是添加了一个全局应用程序类 在Application_Error事件中处理错误页面 和web.config没有关系 即使没有web.config 也是可以定位到错误页面 2 void Application_Error(object sender, EventArgs e) 3 { 4 //在出现未处理的错误时运行的代码 5 Exception erroy = Server.GetLastError(); 6 string err = "出错页面是:" + Request.Url.ToString() + "</br>"; 7 err += "异常信息:" + erroy.Message + "</br>"; 8 err += "Source:" + erroy.Source + "</br>"; 9 err += "StackTrace:" + erroy.StackTrace + "</br>"; 10 //清除前一个异常 11 Server.ClearError(); 12 13 //此处理用Session["ProError"]出错。所以用 Application["ProError"] 14 Application["erroy"] = err; 15 //此处不是page中,不能用Response.Redirect("../frmSysError.aspx"); 16 System.Web.HttpContext.Current.Response.Redirect(HttpContext.Current.Request.ApplicationPath + "error.aspx"); 17 }
3、添加错误处理页面:error.aspx.cs 加入以下代码:
1 protected void Page_Load(object sender, EventArgs e) 2 { 3 //显示程序中的错误码 4 if (!IsPostBack) 5 { 6 //显示程序中的错误码 7 if (Application["erroy"] != null) 8 { 9 Response.Write(Application["erroy"].ToString()); 10 } 11 } 12 }