当前位置:编程学习 > asp >>

ASP.NET自定义错误页面

 

ASP.NET 提供三种用于在出现错误时捕获和响应错误的主要方法:Page_Error 事件、Application_Error 事件以及应用程序配置文件(Web.config)。  

 

  如果您不调用Server.ClearError 或者捕获Page_Error 或Application_Error 事件中的错误,则将根据Web.config 文件的<customErrors> 部分中的设置处理错误。在<customErrors> 部分,可将重定向页指定为默认的错误页(defaultRedirect) 或者根据引发的HTTP 错误代码指定特定页。您可使用此方法自定义用户收到的错误信息。  

尽管您可在<customErrors> 部分中defaultRedirect 属性的值中引用默认的错误页,但是您还可根据引发的HTTP 错误代码指定要重定向到的特定页。<error> 子元素允许使用此选项  

<customErrors mode="On" defaultRedirect="ApplicationErroy.aspx">  

<error statusCode="403" redirect="403.htm"/>  

<error statusCode="404" redirect="404.htm"/>  

<error statusCode="500" redirect="500.htm"/>  

</customErrors>  

 

asp.net自定义错误处理页面方法一  

1、添加Web.config,< system.web>< /system.web>中添加< customErrors mode="On"  

defaultRedirect="ApplicationErroy.aspx" >< /customErrors>节点,  

2、添加错误处理页面:ApplicationErroy.aspx调用下面的方法:  

private void DealErroy()    

{    

    HttpException erroy = new HttpException();    

    string strCode = erroy.ErrorCode.ToString();    

    string strMsg = erroy.Message;    

    erroy.HelpLink = "sss";    

    Response.Write("ErrorCode:" + strCode + "< br>");    

    Response.Write("Message:" + strMsg + "< br>");    

    Response.Write("HelpLink:" + erroy.HelpLink + "< br>");    

    Response.Write("Source:" + erroy.Source + "< br>");    

    Response.Write("TargetSite:" + erroy.TargetSite + "< br>");    

    Response.Write("InnerException:" + erroy.InnerException + "< br>");    

    Response.Write("StackTrace:" + erroy.StackTrace + "< br>");    

    Response.Write("GetHtmlErrorMessage:" + erroy.GetHtmlErrorMessage() + "< br>");    

    Response.Write("erroy.GetHttpCode().ToString():" + erroy.GetHttpCode().ToString() + "< br>");    

    Response.Write("erroy.Data.ToString()::" + erroy.Data.ToString() + "< br>");    

}    

 

private void DealErroy()  

  {  

    HttpException erroy = new HttpException();  

    string strCode = erroy.ErrorCode.ToString();  

    string strMsg = erroy.Message;  

    erroy.HelpLink = "sss";  

    Response.Write("ErrorCode:" + strCode + "< br>");  

    Response.Write("Message:" + strMsg + "< br>");  

    Response.Write("HelpLink:" + erroy.HelpLink + "< br>");  

    Response.Write("Source:" + erroy.Source + "< br>");  

    Response.Write("TargetSite:" + erroy.TargetSite + "< br>");  

    Response.Write("InnerException:" + erroy.InnerException + "< br>");  

    Response.Write("StackTrace:" + erroy.StackTrace + "< br>");  

    Response.Write("GetHtmlErrorMessage:" + erroy.GetHtmlErrorMessage() + "< br>");  

    Response.Write("erroy.GetHttpCode().ToString():" + erroy.GetHttpCode().ToString() + "< br>");  

    Response.Write("erroy.Data.ToString()::" + erroy.Data.ToString() + "< br>");  

  }    

 

这种方法不能完整地显示错误信息;  

 

 

asp.net自定义错误处理页面方法二  

1、添加Web.config,< system.web>< /system.web>中添加< customErrors mode="On"  

defaultRedirect="ApplicationErroy.aspx" >< /customErrors>节点,  

2、添加Global.asax文件,找到Application_Error事件,加入以下代码:    

//这是添加了一个全局应用程序类 在Application_Error事件中处理错误页面 和web.config没有关系 即使没有web.config 也是可以定位到错误页面  

void Application_Error(object sender, EventArgs e)  

{  

  //在出现未处理的错误时运行的代码  

  Exception erroy = Server.GetLastError();    

    string err = "出错页面是:" + Request.Url.ToString() + "</br>";    

    err += "异常信息:" + erroy.Message + "</br>";    

    err += "Source:" + erroy.Source + "</br>";    

    err += "StackTrace:" + erroy.StackTrace + "</br>";    

  //清除前一个异常  

  Server.ClearError();  

     

    //此处理用Session["ProError"]出错。所以用Application["ProError"]  

    Application["erroy"] = err;  

    //此处不是page中,不能用Response.Redirect("../frmSysError.aspx");  

    System.Web.HttpContext.Current.Response.Redirect(HttpContext.Current.Request.ApplicationPath + "/ApplicationErroy.aspx");  

   

}  

2、添加错误处理页面:ApplicationErroy.aspx 加入以下代码;  

protected void Page_Load(object sender, EventArgs e)  

{  

  //显示程序中的错误码  

  if (!IsPostBack)  

  {  

    //显示程序中的错误码  

    if (Application["erroy"] != null)  

    {  

      Response.Write(Application["erroy"].ToString());  

    }  

  }  

}  

这种方法能完整地显示错误信息,  

补充:Web开发 , ASP.Net ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,