Фреймворк отчетов об ошибках для .net

есть ли структура сообщения об ошибках, которую вы могли бы предложить для использования в .net. Мне нужны такие возможности, как отправка отчетов по электронной почте с добавлением файла к электронной почте. Пользователь должен иметь возможность добавлять информацию в отчет, а также должен иметь возможность удалять файлы-отчеты, т. е. если они содержат важные для конфиденциальности данные. Также должна быть возможность делать автоматический снимок экрана. Необходимая структура должна также включать графический интерфейс для сообщений об ошибках. Это должно дать мне возможность создать собственный графический интерфейс для отчетов об ошибках.

Я уже использую log4net, но там, насколько я знаю, невозможно показать пользователю графический интерфейс для сообщения об ошибках.

Было бы неплохо, если бы были какие-то советы,

Привет, Мартин


person martin    schedule 15.12.2009    source источник
comment
См. также stackoverflow.com/questions/49224/   -  person dan-gph    schedule 02.08.2010
comment
Visual Studio Application Insights — это то, что вам нужно! azure.microsoft.com/en-us/documentation /статьи/   -  person smedasn    schedule 24.04.2016


Ответы (9)


Пробовали ли вы использовать Elmah? Он выполняет все элементы обработки ошибок, о которых вы говорите. Вы можете посмотреть на Trac информацию об устранении ошибок.

Доброта,

Дэн

person Daniel Elliott    schedule 15.12.2009


Сверните свой собственный обработчик исключений. Используйте приведенный ниже код в своем классе program.cs. Он будет автоматически отправлять почту при возникновении исключения.

using System;
using System.Windows.Forms;
using System.Net;
using System.Net.Mail;
using System.Threading; 

namespace ExceptionHandlerTest
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.ThreadException +=
                new ThreadExceptionEventHandler(Application_ThreadException);

            // Your designer generated commands.
        }

        static void Application_ThreadException(object sender, ThreadExceptionEventArgs e) 
        {

            var fromAddress = new MailAddress("your Gmail address", "Your name");
            var toAddress = new MailAddress("email address where you want to receive reports", "Your name");
            const string fromPassword = "your password";
            const string subject = "exception report";
            Exception exception = e.Exception;
            string body = exception.Message + "\n" + exception.Data + "\n" + exception.StackTrace + "\n" + exception.Source;

            var smtp = new SmtpClient
            {
                Host = "smtp.gmail.com",
                Port = 587,
                EnableSsl = true,
                DeliveryMethod = SmtpDeliveryMethod.Network,
                UseDefaultCredentials = false,
                Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
            };
            using (var message = new MailMessage(fromAddress, toAddress)
            {
                Subject = subject,
                Body = body
            })
            {
                //You can also use SendAsync method instead of Send so your application begin invoking instead of waiting for send mail to complete. SendAsync(MailMessage, Object) :- Sends the specified e-mail message to an SMTP server for delivery. This method does not block the calling thread and allows the caller to pass an object to the method that is invoked when the operation completes. 
                smtp.Send(message);
            }
        }
    }
}
person Ravi Patel    schedule 15.05.2012
comment
Это так хорошо, спасибо! Хотел бы я принять ваш ответ как правильный. Я использовал это в своем проекте и отлично работает. Я узнал, что если вы поймаете исключение, оно не вызовет почтовый отчет. Но я сделал из него класс и вызываю его в try, catch, поэтому пользователь все равно получает отчет об ошибке визуально. - person MiKE; 17.09.2014
comment
Мне нравится простота, но мне не нравятся жестко закодированные пароли в программах, открытые для злоупотреблений, должен быть способ обернуть их, чтобы их нельзя было легко просмотреть из сборки MSIL. - person rolls; 20.10.2016
comment
@rolls Я создал библиотеку из этого кода, которая теперь не требует электронной почты для SMTP. Он использует службу Drdump для сбора сбоев. Его можно найти по адресу crashreporterdotnet.codeplex.com. - person Ravi Patel; 04.12.2016

Ознакомьтесь со структурой ведения журналов, созданной The Object Guy.

person Klaus Byskov Pedersen    schedule 15.12.2009

У Red Gate есть продукт под названием SmartAssembly, который сообщает об ошибках. Сам не пользовался, но у компании хорошая репутация.

person dan-gph    schedule 02.08.2010
comment
Помните, что вы не можете использовать его в онлайн-конвейере сборки Visual Studio, поскольку для его установки требуется лицензионный ключ. Если можно - напишите мне решение :) - person Ognyan Dimitrov; 09.02.2017

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

person jmservera    schedule 15.12.2009

Существует Microsoft WER, однако вам необходимо зарегистрироваться в Winqual, а вашей компании нужны иметь VeriSign ID. Слишком много хлопот для многих людей.

person Konamiman    schedule 15.12.2009

Корпоративная библиотека от Microsoft, последняя версия 4.1-октябрь 2008 широко используется, среди прочего, для обработки исключений и ведения журнала. Также есть хороший конструктор графического интерфейса, который изменит ваш файл app.config или web.config.

person John K    schedule 15.12.2009

Вы также можете попробовать log4net. Хотя я не уверен насчет электронной почты. Однако он расширяемый. Кроме того, вы можете получить исходный код!

person Kerido    schedule 09.02.2010