Asp.net 如何捕获应用程序_BeginRequest中的*all*异常?
我正在尝试捕获应用程序_BeginRequest中发生的特定异常 到目前为止,我完全无法捕获异常以查看出了什么问题,但是用户看到了500个内部服务器错误。所有其他异常都用Elmah记录,但在本例中,Elmah没有记录它Asp.net 如何捕获应用程序_BeginRequest中的*all*异常?,asp.net,.net,exception,exception-handling,Asp.net,.net,Exception,Exception Handling,我正在尝试捕获应用程序_BeginRequest中发生的特定异常 到目前为止,我完全无法捕获异常以查看出了什么问题,但是用户看到了500个内部服务器错误。所有其他异常都用Elmah记录,但在本例中,Elmah没有记录它 try { if (!String.IsNullOrEmpty(Request.ServerVariables["HTTP_X_BLUECOAT_VIA"])) { string original = Request
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块捕获。try
exception exception=Server.GetLastError()如果其他尝试不起作用,则在catch块体中创建code>
您还可以在同一个Globals类中使用Application_Error事件处理未捕获的异常
protected void Application_Error(object sender, EventArgs e){
Exception exception = Server.GetLastError();
}
我怀疑你的web.config
(或者,不太可能的是,在核心机器配置中)有什么问题-如果它不能破译一个正常的配置,它就永远不会运行你的(或ELMAHs)代码。错误肯定是直接发生在try块中。如果我删除了try块的内容,则不会发生异常。我怀疑错误是RewritePath方法。如果我让异常发生,则应用程序_错误不会实际触发,因此此方法对我不起作用:(在catch块中尝试Server.GetLastError()实际上刚刚意识到,即使catch{}没有抓住它。我一定是在错误的网站上测试,当时我认为这是有效的。我已经相应地更新了我的问题。