良好的示例.Net Windows服务报告错误

时间:2010-07-15 16:15:23

标签: c# windows-services error-handling monitoring notifications

我正在编写一个Windows服务,它将进行大量的网络通信(在共享文件夹中复制许多文件并修改数据库)。

我需要一种方法来通知用户(如果已登录)任何异常/错误。我的问题是将错误发送到组(通过电子邮件发送)给管理员地址。

我知道事件既没有记录来自系统托盘的通知气泡,但是管理员没有查看该日志,他更喜欢电子邮件。

理想的组件是ASP.NET Health Monitoring,但仅适用于IIS,并且需要一个类似于Windows服务的组件。

C#中的任何示例应用程序Windows服务或.net中的其他语言(带源代码)有关此问题的内容?

2 个答案:

答案 0 :(得分:2)

如果您只是需要一种发送电子邮件通知的方法,.Net有SMTP和邮件类型来处理这个问题。电子邮件通知在软件中很常见,这也是常用功能已合并到基类库中的原因。

您可以使用SmtpClient,MailAddress和MailMessage对象来完成简单发送电子邮件通知所需的内容。当然,您需要访问SMTP服务器才能传输邮件,因此请查看其主机地址是否正确配置您的应用程序。以下是一些例子:

SmtpClient  mailClient = new SmtpClient("smtp.fu.bar");
MailAddress senderAddr = new MailAddress("you@fu.bar");
MailAddress  recipAddr = new MailAddress("admin@fu.bar");
MailMessage   emailMsg = new MailMessage( senderAddr, recipAddr );

emailMsg.Subject = "Test email.";
emailMsg.Body = "Here is my email string which serves as the body.\n\nSincerely,\nMe";
mailClient.Send( emailMsg );

这个例子只是简单的代码,但最好把它放到像这样的可重用方法中:

public void SendNotification( string smtpHost, string recipientAddress, string senderAddress, string message, string subject )
{
    SmtpClient  mailClient = new SmtpClient(smtpHost);
    MailMessage   emailMsg = new MailMessage( new MailAddress(senderAddress), new MailAddress(recipientAddress) );

    emailMsg.Subject = subject;
    emailMsg.Body = message;

    mailClient.Send( emailMsg );
}

答案 1 :(得分:0)

检查一下:http://www.codeproject.com/Articles/16335/Simple-Windows-Service-which-sends-auto-Email-aler

我的建议是否第一次使用Windows服务(因为Windows服务很难调试)

  • 首先使用c#
  • 创建命令行应用程序
  • 当您确定项目的所有功能时,请将其移至Windows服务