Я поддерживаю приложение, которое отправляет мне электронное письмо при возникновении ошибки в приложении.Я записываю трассировку стека в электронное письмо, и, похоже, все работает нормально.Не хватает только значений переменных.Я получаю все звонки и тому подобное, просто никогда никаких переменных.Чего мне не хватает для того, чтобы эти значения переменных также были сброшены в электронное письмо?
Ниже приведен код, который я использую для выгрузки этого сообщения в электронное письмо:
UtilityClass.SendEmail(shortNTID,
"admin@mydomain.com",
new string[] { "support@mydomain.com" },
"MyApplication error has occured for user: " +
shortNTID + " (Main).",
"Message: " + ex.Message.ToString() +
" Source: " + ex.Source.ToString() +
" Target Site: " + ex.TargetSite.ToString() +
" Stack Trace: " + ex.StackTrace.ToString());
И вот результатв электронном письме:
Сообщение: указанное приведение недействительно.Источник: целевой сайт MyApplication: Void FindFormAndActivate (MyApplication.MDIParentForm, System.String, System.Object) Трассировка стека: в MyApplication.UtilityClass.FindFormAndActivate (параметр MDIParentForm MyAppateAignateAgameAppateAignateApport) MyApplication.ind.Amping.Apport в MyApplication.ormApp.All)..DashboardAlerts.utAlerts_MouseClick (Отправитель объекта, MouseEventArgs e) в System.Windows.Forms.Control.OnMouseClick (MouseEventArgs e) в System.Windows.Forms.Control.WmMouseUp (кнопка Message & m, MouseButtons, щелчки Int32) в System.Windows.Forms.Control.WndProc (Сообщение & m) в System.Windows.Forms.Control.ControlNativeWindow.OnMessage (Сообщение & m) в System.Windows.Forms.Control.ControlNativeWindow.WndProc (Сообщение & m) в System.Windows.Forms.NativeWindow.Обратный вызов (IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
РЕДАКТИРОВАТЬ
В некоторых ответах предлагается, чтобы я сам добавил значения переменных в электронное письмо,Как бы я получить эти значения, хотя?Этот фрагмент кода, который отправляет электронное письмо, не относится к методу, который не работает.Это код, который запускается каждый раз, когда возникает исключение.Если исключение не обработано и не исправлено, я позволю ему всплыть в верхнюю часть потока в стиле Application.ThreadException += new ThreadExceptionEventHandler(HandleError);
, и именно метод HandleError
выполняет этот вызов по электронной почте.Он не знает, какие переменные или параметры были для метода, вызвавшего исключение.