ASP.NET定制简单的错误处理页面
http://dev.yesky.com/28/3321028.shtml通常Web应用程序在发布后,为了给用户一个友好界面和使用体验,都会在错误发生时跳转至一个自定义的错误页面,而不是ASP.net向用户暴露出来的详细的异常列表。  简单的错误处理页面可以通过web.config来设置以下是引用片段:
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> 
 <error statusCode="403" redirect="NoAccess.htm" /> 
 <error statusCode="404" redirect="FileNotFound.htm" /> 
</customErrors> 
  如果想通过编程的方式来呈现错误原因,可以通过Page_Error事件来做这件事。  另一种方式则可以通过Global.asax来实现,我觉得这种方式较为方便,另外如果能结合一个单独的更加友好的页面,则看来起更舒服一些:................

解决方案 »

  1.   

    多谢楼上的朋友,刚才经过实验,已经证实Application_Error是可以侦测这种超时错误的,而Page_Error却不能,在Web.config中设置了customErrors片段也是不起作用的。看来对付这种SqlDatasource的超时错误,只好用Application_Error来检测了。
      

  2.   

    又测试了一下,不好意思,刚才我说错了,对于Page_Error也是有效的,它们都是能检测超时错误,只是我要它显示出友好的错误提示,所以还要在最后写一句Response.End(),否则页面就又会显示出Timeout expired那个系统错误了。
      

  3.   

    <error statusCode="403" redirect="NoAccess.htm" />
     <error statusCode="404" redirect="FileNotFound.htm" /> 403 访问禁止错误 
    404 页面找不到错误
    400 页面代码错误  这个你没有   
      

  4.   

    把你的代码写在SqlDataSource1的Selected事件中,如下:    protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
        {
            if (e.Exception != null)
            {
                Response.Write(e.Exception.Message.ToString());
            }
        }
      

  5.   

    这回我把错误代码400也加进去了,可是还是不显示自定义的错误页面,依然看到的是Timeout Expired的系统错误。莫非还有其他设置没打开?    <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
                <error statusCode="403" redirect="NoAccess.htm" />
                <error statusCode="404" redirect="FileNotFound.htm" />
                <error statusCode="400" redirect="ErrorMessage.aspx" />
            </customErrors>