C# 发生这种情况时如何通知一个人?
我用C#编写了一个简单的通知程序命令行应用程序。基本上,我使用windows任务调度器,并将其设置为在特定时间运行此命令行应用程序 此时,命令行应用程序将运行,所有通知都将从数据库(使用linq to sql)中获取,并通过smtp格式化并发送给正确的人 现在,我应该如何处理这些场景C# 发生这种情况时如何通知一个人?,c#,C#,我用C#编写了一个简单的通知程序命令行应用程序。基本上,我使用windows任务调度器,并将其设置为在特定时间运行此命令行应用程序 此时,命令行应用程序将运行,所有通知都将从数据库(使用linq to sql)中获取,并通过smtp格式化并发送给正确的人 现在,我应该如何处理这些场景 发生数据库错误 解决方案:向管理员发送一封电子邮件,通知他们失败并进行检查 发生smtp错误 解决方案: 所以这两件事可能会出问题。可能会有不同的组合 可能发生数据库错误,并且smtp也可能发生,或者可能只发生其中
因此,基本上如何使其故障安全,或者至少使其在出现问题时管理员可以来修复它,然后手动运行通知程序并使所有内容恢复同步。因此,主要问题是,如果SMTP服务器出现故障,您不知道如何通知管理员。假设管理员的电子邮件帐户不在同一台服务器上,您有几个选项 第一个选项:您可以在另一台服务器上设置cgi邮件脚本,并通过http与该服务器联系以发送电子邮件 第二种选择:使用smtp客户端,并将其设置为与收件人的smtp服务器联系以直接发送电子邮件(而不是通过本地smtp服务器)
顺便说一句:一些电子邮件提供商为来自特定地址的电子邮件提供文本消息通知。如果管理员不在办公桌上时服务器停机,这非常方便。您有两个选择
- 如果失去网络连接怎么办 (开关或电缆坏了) 例如
- 如果停电怎么办 (您最后一次测试 UPS)
根据您的需要(以及不在短时间内发送这些通知的业务成本),您可能需要一个全面的监控解决方案。也可以选择将错误记录到,如果管理员定期检查事件日志,或者您有聚合这些错误的监控系统。对于您的数据库错误,您可以在(一组)电子邮件地址中硬编码数据库错误以发送到
至于SMTP错误,您可以执行“SMTP恢复时发送电子邮件”,也可以使用其他方法通知管理员。这可能是一个备份SMTP服务器、一个SMS网关(如其他人所提到的),甚至是网络中的某个人桌面,如果它没有收到某种类型的“一切正常”,就会弹出警报从运行脚本的框中发出警告/消息。嗯,我不认为这些通知不会消失,这将是至关重要的……这将是一个更烦人的事情。有了SMS网关,这可能是我将来会考虑的事情(因为我的通知程序设置为处理SMS消息,作为另一种通知方式,而不仅仅是电子邮件)。现在,虽然设置短信网关太麻烦了。你会如何进行检测?在SMTP异常中,有一个线程睡眠15分钟,然后当它醒来时,它只调用程序/方法重新执行?@chobo2:如果它能够成功地发送另一封电子邮件,当它应该发送时,那么你就会知道它已备份,你应该能够广播所有排队的消息。这种桌面方式有什么用?您将如何检测smtp何时恢复?什么是cgi邮件脚本?一个问题是,我可能会在不同的公司建立它,这样他们可能会有不同的东西。所以他们可能有一个备份smtp,也可能没有。@chobo2:我的意思是一个非常简单的web脚本,当出现问题时,它会发送给你(或管理员)和电子邮件。如果服务器可以访问互联网,它可以托管在网络上的任何地方。我想我将对此进行研究。它看起来不错,但可能不会马上解决我的问题,因为我的web应用程序+通知程序将进入试点模式,所以我将暂时担任管理员。因此,我将忙于修复各地的bug,因此我不知道是否每天都要检查日志。