在.NET窗口应用程序中收集/报告意外错误的最佳方法是什么?

Phi*_*rie 6 .net c# error-handling reporting

我正在寻找比我们目前处理意外生产错误更好的解决方案,而不需要重新发明轮子.

我们的大量产品是安装在远程站点的WinForm和WPF应用程序.从NullReferenceExceptions到"常规网络错误",不可避免地会发生意外错误.因此,从程序员错误到环境问题.

目前,使用log4net记录所有这些未处理的异常,然后通过电子邮件发回给我们进行分析.但是我们发现,有时这些错误"报告"包含的信息太少,无法识别问题.

在这些报告中,我们需要以下信息:

  1. 应用名称
  2. 应用版本
  3. 工作站
  4. 也许是一个屏幕截图
  5. 例外细节
  6. 操作系统
  7. 可用内存
  8. 运行流程
  9. 等等...

我真的不想通过从头开始开发这个轮子来重新发明轮子.所需的组件:

  1. 错误收集(详情如上所述)
  2. 错误'发件人'(如果数据库或互联网不可用,则需要排队)
  3. 错误数据库
  4. 分析和报告这些错误.例如,10个最常见的错误或超时发生在下午4:00到下午5:00之间.版本x和y之间的错误如何比较?

注意:我们将SmartAssembly视为一种可能的解决方案,但尽管接近它并不能完全满足我们的需求,但我希望能够听到其他开发人员的工作以及是否存在其他替代方案.

编辑:感谢您的答案到目前为止.也许我在原始问题中并不清楚,问题不在于如何捕获所有无法处理的异常,而是如何处理它们以及围绕它们创建报告引擎(分析).

And*_*rew 5

我建议杰夫阿特伍德关于用户友好异常处理的文章,它完成了你所要求的大部分内容(应用程序信息,屏幕截图,异常详细信息,操作系统,记录到文本文件和电子邮件),并包含源代码,以便您添加额外的你需要的东西.