Необработанные исключения с Global.asax
Я отправляю по электронной почте сведения о необработанных исключениях из global.asax. Как я могу получить путь и / или имя файла aspx или файла сборки, в котором исключение не было обработано.
Эта информация отображалась в трассировке стека исключения, когда я разрабатывал и тестировал. Когда я развернул global.asax в рабочей среде, эта информация больше не отображается в трассировке стека.
Есть ли способ получить эту информацию при создании объекта MailMessage в Global.asax?
Спасибо
Ответов (2)2
Если это приложение ASP.NET, о чем свидетельствует тег, вы должны иметь возможность сделать что-то вроде этого ... ctx.Request.Url.ToString () даст вам имя файла, в котором произошла ошибка.
protected void Application_Error(object sender, EventArgs e)
{
MailMessage msg = new MailMessage();
HttpContext ctx = HttpContext.Current;
msg.To.Add(new MailAddress("[email protected]"));
msg.From = new MailAddress("[email protected]");
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");
}
В Visual Studio вам необходимо настроить сборку выпуска для генерации отладочных символов. В отличие от отладочной сборки, это не установлено по умолчанию. Это даст вам полную трассировку стека исключений.
Даже в этом случае оптимизация, выполненная JIT-компилятором (например, встраивание), может означать, что вы не получите правильный номер строки в трассировке стека. Если вы хотите быть уверены в номере строки, вы также можете установить для сборки выпуска значение «без оптимизации». Но это может означать, что ваше приложение имеет более низкую производительность и / или пропускную способность (последнее имеет тенденцию быть более важным в веб-приложении).
РЕДАКТИРОВАТЬ : Вы можете найти параметр «генерировать символы отладки», перейдя в окно обозревателя решений, щелкнув проект правой кнопкой мыши и выбрав пункт меню «Свойства». Затем перейдите в Свойства конфигурации> Сборка> Создать отладочную информацию и установите значение true или false. Параметр «Оптимизировать код» находится в том же окне.