如何在Application_BeginRequest中捕获* all *异常?

时间:2014-01-17 15:45:57

标签: asp.net .net exception exception-handling

我试图抓住我的Application_BeginRequest中发生的特定异常。

到目前为止,我一直无法捕获异常以查看出现了什么问题,但用户看到了500内部服务器错误。所有其他异常都记录在Elmah中,但在这种情况下,Elmah没有记录它。

try
    {
        if (!String.IsNullOrEmpty(Request.ServerVariables["HTTP_X_BLUECOAT_VIA"]))
        {
            string original = Request.QueryString.ToString();
            HttpContext.Current.RewritePath(Request.Path + "?" + original.Replace(Server.UrlEncode("amp;"), "&"));
        }
    }
    catch (Exception ex) { 
    }

如果我将catch更改为catch(Exception ex),则不会捕获异常并且仍然​​会发生错误。

如果我注释掉try块中的代码,那么页面加载没有错误,所以错误肯定发生在try块中,但不知何故抛出了一个无法使用try / catch块捕获的异常。 / p>

1 个答案:

答案 0 :(得分:1)

如果其他尝试无效,请在catch块的正文中尝试Exception exception = Server.GetLastError();

您还可以使用同一Globals类中的Application_Error事件处理未捕获的异常。

 protected void Application_Error(object sender, EventArgs e){
      Exception exception = Server.GetLastError(); 
 }