asp.net自定义错误处理页面的几种发提

2012 年 10 月 28 日4840

欢迎进入.NET社区论坛,与300万技术人员互动交流 >>进入

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());

}

}

}

这种发提能完整地显示错误信息,

最好的办法还是两种发提一起用最好!

[1]

【责编:peter】

0 0