none
ASP NET 错误处理机制 RRS feed

全部回复

  • 因为先导到CustomError.aspx 这一页没有出错就不再导到StaticError.html

    您可以在CustomError.aspx再throw new Exception()就会到StaticError.html 了

    或两者挑一个用

    把Server.Transfer("/CustomError.aspx");注译掉再试试

     protected void Application_Error(object sender, EventArgs e)
            {
    
               //Server.Transfer("/CustomError.aspx");
    
               // Server.ClearError();
    
                Exception ex = Server.GetLastError();
    
            }

    2012年1月19日 10:36
  • 你先扑捉异常,然后写日志等操作,完了之后在跳转到指定的错误页面去

     

    2012年1月20日 3:04
    版主
  • 因为先导到CustomError.aspx 这一页没有出错就不再导到StaticError.html

    您可以在CustomError.aspx再throw new Exception()就会到StaticError.html 了

    或两者挑一个用

    把Server.Transfer("/CustomError.aspx");注译掉再试试

     protected void Application_Error(object sender, EventArgs e)
            {
    
               //Server.Transfer("/CustomError.aspx");
    
               // Server.ClearError();
    
                Exception ex = Server.GetLastError();
    
            }

     


    Page 页面有抛出异常,所以才会到Global.asax里的Application_Error事件。这一点我没有疑问。

     

    在Application_Error 里将

    Server.Transfer("/CustomError.aspx"); 注释掉后,确实可以跳转到StaticError.html 页面。
    但CustomError.aspx 并没有调用Server.ClearError();
    我有一步一步调试,可以肯定没有任何地方有调用:Server.ClearError(); 方法。
    而且 Server.GetLastError()返回的结果也不为null.

    我的问题是: 既然Application_Error 事件只是将页面跳转到 /CustomError.aspx,并没有clear 异常(异常还是存在的),为什么不按照web.config里面的配置 跳转到StaticError.html 页面。

    谢谢大家!

    提前预祝大家春节快乐!
     
    2012年1月20日 6:48
  • 您可以测一下就知道

    ASP.net抛出异常的处理流程大致:

    Page→Global.asax→Web.config

     

    因为在Global.asax执行了Server.Transfer("/CustomError.aspx");

    CustomError.aspx被当作处理掉异常,而且CustomError.aspx也没有再抛出异常

    所以流程才不会再往下执行到Web.config 


    2012年1月20日 7:14
  • 您可以测一下就知道

    ASP.net抛出异常的处理流程大致:

    Page→Global.asax→Web.config

     

    因为在Global.asax执行了Server.Transfer("/CustomError.aspx");

    CustomError.aspx被当作处理掉异常,而且CustomError.aspx也没有再抛出异常

    所以流程才不会再往下执行到Web.config 



    不需要调用Server.ClearError(); 方法吗?。

    从CustomError.aspx 回到Application_Error 事件,Server.GetLastError()返回的结果也不为null.

    说明异常并没有被处理掉!
    2012年1月20日 7:46
  • 你好,
    或许你看看换个逻辑行不行???先取到ex然后在Transfer

    protected void Application_Error(object sender, EventArgs e)
    {
        Exception ex = Server.GetLastError();
       
        // Server.ClearError();
       
        Server.Transfer("/CustomError.aspx");
    }

    看那小样还跑???


    博客园: dotNetDR_ 的博客 - 天杀下来的BUG,不怕有我来挡!

    博客园介绍: 博客园创立于2004年1月,是面向软件开发者的高品质IT技术社区,聚集了很多优秀的软件开发者和IT技术学习者。

    2012年5月31日 5:34
  • 这很好理解的呀

    Application_Error就相当于Try Catch

    Try

    {

    }

    Catch

    {

    Server.Transfer("Url"); 你的代码

    CustomerError的跳转代码

    }

    2012年6月16日 0:16
    版主