【问题标题】:Include full trace with stack trace / error output c#包括带有堆栈跟踪/错误输出的完整跟踪c#
【发布时间】:2014-06-12 09:56:14
【问题描述】:

我在global.asax 文件中使用以下代码:

void Application_Error(object sender, EventArgs e)
{
    // Code that runs when an unhandled error occurs
    Exception objErr = Server.GetLastError().GetBaseException();
    string err = "Error Caught in Application_Error event<hr />" + "Current User: " + HttpContext.Current.User.Identity.Name + "<hr />" +
            "Error in: " + Request.Url.ToString() +
            "<hr />Error Message:" + objErr.Message.ToString() +
            "<hr />Stack Trace:" + objErr.StackTrace.ToString();
    //EventLog.WriteEntry("Sample_WebApp", err, EventLogEntryType.Error);

    doEmail.sendEmail("Application Error - Curato (" + System.Configuration.ConfigurationManager.AppSettings["OrganisationName"].ToString() + ")", err);

    // We do not want the error handled by the web.config as well, so clear the error.
    Server.ClearError();
    // Now redirect ourselves...
    Response.Redirect("~/error.aspx?aspxerrorpath=" + Server.UrlEncode(Request.Url.PathAndQuery));
}

这会将 stackTrace 和当前用户发送到管理员电子邮件地址,并将用户重定向到友好的错误页面。

我怎样才能在err 中包含完整的跟踪信息?也就是说,与我在&lt;%@ Page 指令中设置Trace="True" 的信息相同。

我正在探索 Trace 对象 - 并找到了如何从第 3 方阅读器 how to read trace 读取它,但我想只用本机代码阅读它。

【问题讨论】:

    标签: c# asp.net webforms


    【解决方案1】:

    您已经获得了异常的完整 StackTrace,我相信您正在查看错误的 Exception 对象:

    我认为你的错误在这一行:

    Exception objErr = Server.GetLastError().GetBaseException();
    

    我认为正确的应该是:

    Exception objErr = Server.GetLastError();
    

    也可以检查异常是否有InnerException:

    if (objErr.InnerException != null)
        err = err + "<hr/>Message:" +  objErr.InnerException.Message;
    

    另请参阅此问题: Application_Error - GetLastError() or GetLastError().GetBaseException()

    【讨论】:

    • 谢谢你的回答 - 魔鬼在细节中,我特别关注跟踪,因为认为你在页面上启用了 trace="true",所以事件时间,来自Trace.Write 的输出和Trace.Warn
    猜你喜欢
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多