c# - 当这种情况发生时如何通知一个人?

标签 c#

我用 C# 制作了一个简单的通知程序命令行应用程序。基本上我使用 Windows 任务调度程序并将其设置为在特定时间运行此命令行应用程序。

当这个时候被击中时,命令行应用程序运行所有通知从数据库(使用 linq to sql)格式化并通过 smtp 发送给正确的人。

现在我应该如何处理这些情况

  1. 发生数据库错误

解决方案:向管理员发送电子邮件,通知他们失败并检查。

  1. 发生 smtp 错误

解决方案:????

因此,这确实是可能出错的两件事。这可能有不同的组合。

可能会出现数据库错误,也可能会出现smtp错误,或者只有一个或另一个可能会出现。

那么如何将此信息提供给管理员或其他人,以便他们进行修复。我非常怀疑管理员会每天去检查通知是否有效。

所以基本上如何让它安全地失效,或者至少让它在出现问题时管理员可以来修复它,然后手动运行通知程序并让所有内容恢复同步。

最佳答案

您有几个选择。

  1. 将错误信息写入日志。让某些运算符(operator)每隔一段时间检查日志成为一种程序。

  2. 它是否调用了其他服务?

但是,如果数据库不仅仅被您的应用程序使用,其他人很可能会注意到。电子邮件服务器也是如此。如果停机,那么我敢打赌很多人都会打电话。请注意,您的情况排除了丢失的网络连接(例如死掉的交换机或错误配置的路由器)。

顺便说一句,如果它检测到 SMTP 已备份,那么它应该通知某人它在给定时间段内已关闭。数据库服务器也是如此。

最后,所有错误情况都应写入您的系统日志。写入 Windows 事件日志非常简单。如果您的系统管理员遵循普遍接受的协议(protocol),他们应该经常监控这些协议(protocol)。

关于c# - 当这种情况发生时如何通知一个人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3242094/

相关文章:

C# Winforms 动态菜单条目

c# - asp.net 的确认消息框功能?

c# - x :Key, x :Name, x :Type, x:XAML 中的静态的含义

javascript - 站点加载时显示弹出窗口一次

c# - 无法从传输连接 IMAP 读取数据

c# - 在字符串中的每个字符后添加特定字符的优雅方法

c# - 如何使用 OAuth 获取 Google Analytics 数据?

c# - 命名空间 'TeamFoundation' 中不存在类型或命名空间名称 'Microsoft'

c# - 强制方法从基类调用基方法

c# - 带有 SQLite 异常 : The underlying provider failed on Commit 的 Entity Framework