Отправка ошибок журналов через .NET Desktop Application

StackOverflow https://stackoverflow.com/questions/2598478

  •  25-09-2019
  •  | 
  •  

Вопрос

В последнее время наши клиенты испытывают неожиданные аварии. Мы уже регистрируем ошибки на своих местных машинах. Есть ли механизм, позволяющий им «отправить журнал ошибок» как-то, когда приложение вылетает или когда произойдет неожиданное поведение?

Другими словом, как я знаю, что приложение замерзло или повесило или разбилось, поэтому я могу что-то отправить, и переопределить нормальное сообщение «Не отвечать сообщением Windows?

Это было полезно?

Решение

В прошлом мне повезло с журналами для ведения журнала для веб-сайта (до тех пор, пока клиент разрешается выйти в Интернет) с кодом, как тот, который ниже. Это для ведения журнала, что вы еще не ловите. Если вы компилируете ваше приложение в режиме выпуска, но также включите файлы PDB, вы получите Stacktrace с номерами строки.

Вы также должны регистрировать версию вашей сборки, чтобы узнать, какая версия приложения дает вам ошибки.

public void RegisterHandlers()
{
    Application.ThreadException += new ThreadExceptionEventHandler(ThreadExceptionFunction);
    Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(UnhandledExceptionFunction);
}

private void UnhandledExceptionFunction(object sender, UnhandledExceptionEventArgs args)
{
    Exception e = (Exception)args.ExceptionObject;
    ExceptionLogger(e.StackTrace);
}

private void ThreadExceptionFunction(object sender, ThreadExceptionEventArgs args)
{
    ExceptionLogger(args.Exception.StackTrace);
}

private void ExceptionLogger(string trace)
{
    // log the message to a webservice
}

Другие советы

Я не думаю, что есть много, что вы можете сделать, если он повешен, но если это вылетает, вы можете поймать некоторые из этих аварий UnandlededexceptionEventHandler..

Вы можете обрабатывать висины, проверив, когда приложение запускается, если он ранее выключается правильно и написал сообщение «Выключение» сообщения в журнал, и если он не мог попросить пользователя, если они хотят отправить журнал в ты.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top