首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Global.asax中未处理的异常

Global.asax中未处理的异常
EN

Stack Overflow用户
提问于 2009-02-24 23:58:33
回答 2查看 10.3K关注 0票数 11

我正在通过电子邮件发送来自global.asax的未处理异常详细信息。如何获取未处理异常的aspx文件或程序集文件的路径和/或文件名。

当我在开发和测试的时候,这个信息显示在异常的堆栈跟踪中。当我将global.asax部署到生产环境中时,此信息不再显示在堆栈跟踪中。

当我在Global.asax中构建我的MailMessage对象时,有没有办法获得这些信息?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-02-26 00:24:33

如果这是一个ASP.NET应用程序,如标签所示,您应该能够这样做……ctx.Request.Url.ToString()将为您提供错误发生位置的文件名。

代码语言:javascript
复制
protected void Application_Error(object sender, EventArgs e)
{
    MailMessage msg = new MailMessage();
    HttpContext ctx = HttpContext.Current;

    msg.To.Add(new MailAddress("me@me.com"));
    msg.From = new MailAddress("from@me.com");
    msg.Subject = "My app had an issue...";
    msg.Priority = MailPriority.High;

    StringBuilder sb = new StringBuilder();
    sb.Append(ctx.Request.Url.ToString() + System.Environment.NewLine);
    sb.Append("Source:" + System.Environment.NewLine + ctx.Server.GetLastError().Source.ToString());
    sb.Append("Message:" + System.Environment.NewLine + ctx.Server.GetLastError().Message.ToString());
    sb.Append("Stack Trace:" + System.Environment.NewLine + ctx.Server.GetLastError().StackTrace.ToString());
    msg.Body = sb.ToString();

    //CONFIGURE SMTP OBJECT
    SmtpClient smtp = new SmtpClient("myhost");

    //SEND EMAIL
    smtp.Send(msg);

    //REDIRECT USER TO ERROR PAGE
    Server.Transfer("~/ErrorPage.aspx");
}
票数 12
EN

Stack Overflow用户

发布于 2009-02-25 00:05:16

在Visual Studio中,需要设置发布版本以生成调试符号。与调试构建中不同的是,这不是默认设置。这将为您提供完整的异常堆栈跟踪。

即使这样,JIT编译器所做的优化(例如内联)可能意味着您在堆栈跟踪中没有获得正确的行号。如果你想确定行号,你也可以将发布版本设置为“无优化”。但这可能意味着你的应用程序具有较低的性能和/或吞吐量(后者在web应用程序中往往更重要)。

编辑符号:您可以通过转到解决方案资源管理器窗口,右键单击项目,并选择“”菜单项来找到"generate debugging“设置。然后转到Configuration Properties > Build > Generate Debugging并设置为true或false。“优化代码”设置位于同一窗口中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/584199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档