C# 如何从.net错误对话框发送错误报告?

C# 如何从.net错误对话框发送错误报告?,c#,.net,email,crash-reports,C#,.net,Email,Crash Reports,2008年,杰夫写了一篇文章。本着这种精神,我试图在崩溃错误对话框中添加一个“发送错误报告”按钮。这个想法是用户可以很容易地发送完整的bug报告,其中已经包括版本信息、操作系统信息、堆栈跟踪。。。此信息应放在邮件正文或附件文件中 不幸的是,从.NET应用程序发送这样一封电子邮件似乎并不简单: 这不是我想要的:我不能确定在所有环境中都可以连接到SMTP服务器,我也不想让用户承担配置本地SMTP主机名和端口的负担。相反,我只想用一条预合成的消息在系统上启动现有的电子邮件软件 使用操作系统是可行的,

2008年,杰夫写了一篇文章。本着这种精神,我试图在崩溃错误对话框中添加一个“发送错误报告”按钮。这个想法是用户可以很容易地发送完整的bug报告,其中已经包括版本信息、操作系统信息、堆栈跟踪。。。此信息应放在邮件正文或附件文件中

不幸的是,从.NET应用程序发送这样一封电子邮件似乎并不简单:

  • 这不是我想要的:我不能确定在所有环境中都可以连接到SMTP服务器,我也不想让用户承担配置本地SMTP主机名和端口的负担。相反,我只想用一条预合成的消息在系统上启动现有的电子邮件软件
  • 使用操作系统是可行的,但是对于通过这种方式传递的数据量有一些恼人的限制。此外,附件似乎并不真正受支持
  • 可能会做我想做的事情,如图所示,但我在其他地方读到,这会导致随机崩溃

有人找到了安全可靠的解决方案吗?

在使用自己的兼容服务器时,您可以创建一个类似“telnet”的套接字结构,将数据直接发布到服务器中


类似这样的内容:

我们通过创建一个简单的WCF web服务来解决这个问题,该服务获取堆栈跟踪、压缩日志等,客户端将其发布到该服务,然后让web服务服务器发送电子邮件。 这样,您不必在客户端拥有SMTP身份验证信息,也不必依赖用户通过其电子邮件客户端提交错误报告


我们现在甚至可以通过此Web服务定期压缩和提交客户端日志到后端服务器,并分析这些日志,以便在客户端出现问题之前预先检测任何客户端问题

一种快速方法是设置服务器,通过PHP f.e.接收信息。创建一个
ErrorReport.php
,并尝试使用打包在base64包中的所有信息调用它


此“仅”需要在端口80上访问Internet,该端口很可能可用。从那里,您可以处理信息并将其传递到数据库f.e.

+1。我确实担心,我们的软件往往运行在锁定的环境中,在这些环境中,不总是允许随机传出连接。另一方面,我也不能确定是否可以发送电子邮件,因此我需要一个备用解决方案(例如“将错误报告保存到文件”)。您可以简单地将服务调用包装为try/catch,如果失败,您可以让用户选择通过其电子邮件客户端发送(在回答让我意识到解决方案不必涉及电子邮件之后,我编辑了标题。)