49 votes

Une bonne bibliothèque de rapports d'accidents en c#

Quelqu'un connaît-il une bonne bibliothèque de rapports d'accidents pour C# ?

En C++, il y a CrashRpt disponible, donc j'aimerais quelque chose de ce genre.

Idéalement, j'aimerais que la bibliothèque compile des informations générales sur l'ordinateur, ainsi qu'un mini-fichier de vidage en cas de panne.

J'aurais également besoin d'une bibliothèque qui soit gratuite pour une utilisation commerciale et dont le code source soit disponible.

37voto

Brian Chavez Points 2507

Essayez :

1) Rapporteur d'exception

http://www.codeplex.com/ExceptionReporter


2) Piège à insectes

http://www.codeproject.com/KB/applications/BugTrap.aspx

Site de l'auteur de BugTrap :

http://www.intellesoft.net/downloads.php
http://github.com/bchavez/BugTrap (source miroir)

BugTrap est livré avec BugTrapN.dll pour le support géré de .NET.


3) BugzScout

De même, si vous utilisez FogBugz, essayez BugzScout :

http://help.fogcreek.com/7566/bugzscout-for-automatic-crash-reporting


4) NBug

Si vous n'en avez pas besoin, demandez à l'utilisateur la permission d'envoyer chaque rapport ; cela pourrait être possible lorsque la 2.0 sortira. mais depuis la version 1.2.2, ce n'est plus possible.

http://nbug.codeplex.com/

https://github.com/soygul/NBug


Ce sont gratuit y viennent avec la source (sauf BugzScout, à moins que vous n'utilisiez leur édition de démarrage pour 2 utilisateurs).

8voto

Roger Lipscombe Points 34344

Inscrivez-vous pour WinQual et laissez Microsoft s'occuper de tout le travail à votre place.

(vous aurez besoin d'IE pour cliquer sur le lien WinQual)

Mise à jour : WinQual a été a remplacé

7voto

Rad Points 6308

Jetez-y un coup d'œil : SmartInspect : http://www.gurock.com/products/smartinspect/ SmartAssembly : n http://www.smartassembly.com/

5voto

David Crow Points 7704

En réponse aux demandes de portage de CrashRpt, son auteur a suggéré d'appeler la DLL non gérée depuis C#. Peut-être est-ce une option pour vous...

4voto

Ravi Patel Points 641

Créez votre propre gestionnaire d'exception. Utilisez le code ci-dessous dans votre classe program.cs. Il enverra automatiquement un courrier lorsque l'exception se produit.

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);
            }
        }
    }
}

Vous pouvez gagner du temps en vous procurant une bibliothèque de rapports d'accident basée sur celle-ci auprès de https://crashreporterdotnet.codeplex.com/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X