关于ASP.NET网站页面级错误的处理

19 篇文章 0 订阅
12 篇文章 0 订阅

在学习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()是错误信息

具体的操作就由程序员自己去设置了。


本文仅是为页面出错处理提出两种解决方案。当然,可能还有其它解决方法。如果有朋友对本文说明有疑惑或者异议之处,欢迎留言评论指教。




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值