有什么方法可以从Global.asax中的Application_Error捕获的未处理异常中获取更多信息吗?

时间:2012-10-03 04:35:03

标签: asp.net global-asax unhandled-exception application-error

在生产中,我在Global.asax中处理了Application_Error事件,以记录(并通过电子邮件发送给我)任何潜在的未捕获异常的详细信息:

void Application_Error(object sender, EventArgs e) // code simplified a bit for SO
{
    Exception ex = Server.GetLastError();
    MyTools.LogError("Global.asax::Application_Error", "An unhandled exception occurred", ex);
}

错误信息本身通常无用;有一个堆栈跟踪,但没有行号通常不引用任何我自己的代码,只有.net框架(BCL)方法。有时候至少会有一个关于页面名称的提示,但这种情况和它一样好。

示例:

  

抛出了类型'System.Web.HttpUnhandledException'的异常。

     

远程主机关闭了连接。错误代码是0x80072746。

     

的System.Web

     

Boolean HandleError(System.Exception)

     System.Web.UI.Page.HandleError上的

(例外e)      在System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)      在System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)      在System.Web.UI.Page.ProcessRequest()      在System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)      在System.Web.UI.Page.ProcessRequest(HttpContext上下文)      在ASP。 aRealPageName_aspx .ProcessRequest(HttpContext context)      在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()      在System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)

所以我知道如何让global.asax给我更多有用的错误信息?

我知道我可以在代码中加入try-catch,如果有办法告诉它放在哪里,但没有。

1 个答案:

答案 0 :(得分:1)

如果您的生产服务器没有pdb文件,它将不会为您提供行号。 将您的pdb文件与dll一起复制以获取更多信息。