【问题标题】:Any way to get more info from unhandled exceptions caught by Application_Error in Global.asax?有什么方法可以从 Global.asax 中的 Application_Error 捕获的未处理异常中获取更多信息?
【发布时间】:2012-10-03 04:35:03
【问题描述】:

在生产中,我在 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。

系统.Web

布尔句柄错误(System.Exception)

在 System.Web.UI.Page.HandleError(异常 e) 在 System.Web.UI.Page.ProcessRequestMain(布尔 includeStagesBeforeAsyncPoint,布尔 includeStagesAfterAsyncPoint) 在 System.Web.UI.Page.ProcessRequest(布尔 includeStagesBeforeAsyncPoint,布尔 includeStagesAfterAsyncPoint) 在 System.Web.UI.Page.ProcessRequest() 在 System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext 上下文) 在 System.Web.UI.Page.ProcessRequest(HttpContext 上下文) 在 ASP.aRealPageName_aspx.ProcessRequest(HttpContext 上下文) 在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

那么知道如何获取 global.asax 以提供更多有用的错误信息吗?

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 哦!没有想到这一点。即使我没有在调试模式下运行,它也能工作吗?
    • 可以,只要您的构建生成了 pdb 文件(这是默认设置)
    猜你喜欢
    • 2011-06-16
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 2017-05-08
    • 2011-01-04
    相关资源
    最近更新 更多