在学习ASP.NET网站编程时,总会出这样那样的错误。有的错误在编程中可以发现和预防,有的错误可能就不一定能发现和处理了。比如404错误、查询数据库时语句拼接(如果使用传参就可以不出这个错误)语法错误。当网页报错时,如果不想网站出现系统错误提示,如
想屏蔽这种错误提示页,并且显示自己希望的错误提示页面。可以有如下两种方法:
方法1:在web.config文件中设置
在web.config中,有如下代码:
<!-- 如果在执行请求的过程中出现未处理的错误,
则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
开发人员通过该节可以配置
要显示的 html 错误页
以代替错误堆栈跟踪。
如果在Global.asax定义了Application_Error事件,则<customErrors>不起作用
<customErrors mode="Off" defaultRedirect="DefaultError.htm">
<error statusCode="403" redirect="error.aspx" />
<error statusCode="404" redirect="error.aspx" />
</customErrors>-->
这时可以把注释去掉,并将mode设置成"On"
如:
<!-- 如果在执行请求的过程中出现未处理的错误,
则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
开发人员通过该节可以配置
要显示的 html 错误页
以代替错误堆栈跟踪。
如果在Global.asax定义了Application_Error事件,则<customErrors>不起作用-->
<customErrors mode="On" defaultRedirect="DefaultError.htm">
<error statusCode="403" redirect="error.aspx" />
<error statusCode="404" redirect="error.aspx" />
</customErrors>
这时,通过修改redirect的值就可以定义你页面出错时所需要跳转到的页面了。
方法二:
在Globle.asax中重写Application_Error事件。
代码如下:
void Application_Error(object sender, EventArgs e)
{
Exception objErr = Server.GetLastError().GetBaseException();
string error = "发生异常页: " + Request.Url.ToString() + "<br>";//出错页的页面URL
error += "异常信息: " + objErr.Message + "<br>";//出错的错误信息
Server.ClearError();
Application["error"] = error;
Response.Redirect("~/ErrorPage.aspx");//定义出错时要跳转到的错误提示页
}
然后在ErrorPage.aspx页面中,可以提示用户页面出错了,并将错误内容保存在数据库或网站的错误日志里。
在ErrorPage.aspx页面中,访问错误信息的方法如下:
Response.Write(Application["error"].ToString());//Application["error"].ToString()是错误信息
具体的操作就由程序员自己去设置了。
本文仅是为页面出错处理提出两种解决方案。当然,可能还有其它解决方法。如果有朋友对本文说明有疑惑或者异议之处,欢迎留言评论指教。