2009-12-15 34 views
9

có khung báo cáo lỗi mà bạn đề nghị sử dụng trong .net. Tôi cần các khả năng như báo cáo e-mail với việc nộp đơn đăng ký vào e-mail. Người dùng phải có khả năng thêm thông tin vào báo cáo và cũng nên có khả năng xóa các tệp báo cáo, tức là nếu chúng chứa dữ liệu quan trọng về quyền riêng tư. Cũng cần có khả năng chụp ảnh màn hình tự động. Khung cần thiết cũng phải bao gồm guis báo lỗi. Nó sẽ cho tôi khả năng tạo ra guis riêng để báo cáo lỗi.Khuôn khổ báo cáo lỗi cho .net

Tôi đã sử dụng log4net, nhưng không thể, theo như tôi biết, để hiển thị gui để báo cáo lỗi cho người dùng.

Sẽ được tốt đẹp nếu có bất kỳ lời khuyên,

Greetings, Martin

+1

Xem thêm http://stackoverflow.com/questions/49224/good-crash-reporting-library-in-c –

+0

Thông tin chi tiết về ứng dụng Visual Studio là những gì bạn cần! https://azure.microsoft.com/en-us/documentation/articles/app-insights-windows-desktop/ – smedasn

Trả lời

5

Các bạn đã thử Elmah? Nó làm tất cả các lỗi xử lý các yếu tố bạn đang nói đến. Bạn có thể xem số Trac cho các bit bị lỗi mà bạn muốn.

Kindness,

Dan

1

Kiểm tra Enterprise Library, bạn có một khai thác gỗ và xử lý ngoại lệ log ứng dụng hoàn toàn có thể cấu hình và mở rộng.

4

Tôi quen thuộc với các "doanh nghiệp Thư viện Microsoft Logging Block" và "Log4Net" và cả hai phù hợp với yêu cầu của bạn (có nhiều người nghe log) Đây là một trang so sánh hai: http://weblogs.asp.net/lorenh/archive/2005/02/18/376191.aspx

+0

Tôi đã sử dụng log4net, nhưng có khả năng tạo log4net cửa sổ báo cáo sự cố không? Không thể tạo thư tự động với nhật ký vì lý do bảo mật. Người dùng phải có khả năng quyết định liệu anh ta có báo cáo sự cố không. – martin

1

Có là Microsoft WER, tuy nhiên bạn cần đăng ký tại Winqual và công ty của bạn cần có ID VeriSign. Quá nhiều rắc rối cho nhiều người.

0

Microsoft Enterprise Library, phiên bản mới nhất 4.1-October 2008 được sử dụng rộng rãi để xử lý ngoại lệ và ghi nhật ký trong số những thứ khác. Ngoài ra còn có một trình xây dựng GUI đẹp sẽ sửa đổi tệp app.config hoặc web.config của bạn.

3

Kiểm tra khuôn khổ khai thác gỗ làm bằng The Object Guy

+0

nó được đặt tên là "Mối" và chuyển đến http://dotnetlog.theobjectguy.com/ – Lucas

0

Bạn cũng có thể thử log4net. Tuy nhiên, tôi không chắc chắn về việc gửi email. Tuy nhiên, nó có thể mở rộng. Thêm vào đó bạn có thể lấy mã nguồn!

+2

Ông cho biết ông đã sử dụng log4net. –

3

Cổng đỏ có sản phẩm được gọi là SmartAssembly có báo cáo lỗi. Tôi đã không sử dụng nó bản thân mình, nhưng công ty có một danh tiếng tốt.

+0

Hãy coi chừng rằng bạn không thể sử dụng nó trong đường dẫn xây dựng trực tuyến studio trực quan bởi vì nó yêu cầu cài đặt với khóa cấp phép. Nếu bạn có thể - nhắn tin giải pháp cho tôi :) –

4

Cuộn trình xử lý ngoại lệ của riêng bạn. Sử dụng mã dưới đây trong lớp program.cs của bạn. Nó sẽ tự động gửi thư khi ngoại lệ xảy ra.

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

Điều này rất tốt, cảm ơn bạn! Tôi ước tôi có thể chấp nhận câu trả lời của bạn là chính xác. Tôi đã sử dụng nó trong dự án của mình và hoạt động hoàn hảo. Tôi đã phát hiện ra nếu bạn bắt ngoại lệ sau đó nó không gọi báo cáo thư. Nhưng tôi đã thực hiện một lớp học từ nó và tôi gọi nó là "try, catch", vì vậy người dùng vẫn nhận được một báo cáo lỗi trực quan. – MiKE

+0

Tôi thích sự đơn giản nhưng tôi không thích mật khẩu mã hóa cứng trong các chương trình, mở để lạm dụng, nên là một cách để bọc nó lên để nó không thể dễ dàng xem từ hội đồng MSIL. – rolls

+1

@rolls Tôi đã tạo thư viện ra khỏi mã này không yêu cầu email cho SMTP ngay bây giờ. Nó sử dụng dịch vụ Drdump để thu thập sự cố. Bạn có thể tìm thấy nó tại https://crashreporterdotnet.codeplex.com/ –

Các vấn đề liên quan