我在C#中创建了一个简单的通知程序命令行应用程序。基本上我使用Windows任务调度程序并将其设置为在特定时间运行此命令行应用程序。
当这个时间被命中时,运行命令行应用程序所有通知都是从数据库中获取的(使用linq到sql)格式化并由smtp发送给合适的人。
现在我应该如何处理这些情景
解决方案:向管理员发送电子邮件,通知他们失败并将其签出。
解决方案:?????
所以这些都是可能出错的两件事。可能有不同的组合。
可能会发生数据库错误,也可能发生smtp,或者只发生一个或另一个。
那么如何将此信息提供给管理员或其他人,以便他们可以修复它。我非常怀疑管理员会每天检查通知是否有效。
所以基本上如何使其失败安全或至少使其成为错误,如果出现问题,管理员可以修复它,只需手动运行通知程序,让所有内容恢复同步。
答案 0 :(得分:1)
你有两个选择。
将错误信息写入日志。让它成为某个操作员经常检查日志的过程。
让它打电话给其他服务吗?
但是,如果数据库不仅仅被您的应用程序使用,那么其他人完全可能会注意到。与电子邮件服务器相同。如果它失败了,那么我打赌很多人都会打电话。请注意,您的情况会排除网络连接丢失(如死机或配置错误的路由器)。
顺便提一下,如果它检测到SMTP已备份,那么它应该通知某人它在给定时间段内已关闭。关于数据库服务器也是如此。
最后,应将所有错误条件写入系统日志。写入Windows事件日志非常简单。如果您的系统管理员遵循普遍接受的协议,他们应该经常监控这些协议。
答案 1 :(得分:0)
因此,主要问题是您不知道如何在SMTP服务器发生故障时通知管理员。假设管理员的电子邮件帐户不在同一服务器上,您有几种选择。
第一个选项:您可以在另一台服务器上设置cgi邮件脚本,并通过http联系该邮件脚本以发送电子邮件。
第二个选项:使用smtp客户端并将其设置为联系接收者的smtp服务器以直接发送电子邮件(而不是通过本地smtp服务器)。
BTW:一些电子邮件提供商为来自某个地址的电子邮件提供短信通知。如果服务器在管理员离开办公桌时发生故障,这非常方便。答案 2 :(得分:0)
您可以使用SMS gateway或将手机附加到服务器,并在发生严重错误时向管理员发送短信。
但你可以更进一步:
根据您的需求(以及不在短时间内发送这些通知的业务成本),您可能需要一个完整的监控解决方案。
答案 3 :(得分:0)
将错误记录到EventLog也可以是一个选项,只要管理员定期检查EventLog或者您有监控系统来汇总这些错误。
答案 4 :(得分:0)
对于您的数据库错误,您可以在(一组)电子邮件地址中进行硬编码以发送数据库错误。
对于SMTP错误,您可以执行“在smtp恢复时发送电子邮件”,或者您必须使用备用方法来警告您的管理员。这可能是一个备份SMTP服务器,一个SMS网关(正如其他人提到的那样),甚至是某些东西,例如网络中的某个桌面,如果它没有收到某种类型的“一切正常”警报/消息,则会弹出警报运行脚本的框。