Хороший пример. Net службы Windows, чтобы сообщить об ошибке - PullRequest
1 голос
/ 15 июля 2010

Я пишу службу Windows, которая будет выполнять большую часть сетевого взаимодействия (скопировать много файлов в общие папки и изменить базу данных).

Мне нужен способ уведомления пользователя (если он вошел в систему) о любых исключениях / ошибках. Моя проблема заключается в том, чтобы сделать группу с ошибками для отправки (по электронной почте) на адрес администратора.

Мне известно о том, что в журнале событий нет ни уведомления, ни уведомления из системного трея, но администратор не просматривает этот журнал, он предпочитает электронную почту.

Идеальный компонент - это мониторинг работоспособности ASP.NET, но он работает только для IIS, и для него требуется компонент, аналогичный службам Windows.

Любой пример приложения Windows Service на C # или другого языка в .net (с исходным кодом) об этой проблеме ??

Ответы [ 2 ]

2 голосов
/ 15 июля 2010

Если вам просто нужен способ отправить уведомление по электронной почте, в .Net есть SMTP и типы почты, чтобы позаботиться об этом. Уведомления по электронной почте больше распространены в программном обеспечении, и поэтому часто используемые функции были включены в базовый класс lib.

Вы можете использовать объекты 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 );
}
0 голосов
/ 20 марта 2013

отметьте это: http://www.codeproject.com/Articles/16335/Simple-Windows-Service-which-sends-auto-Email-aler

мой совет, если вы впервые работаете со службой Windows (потому что служба Windows очень трудно отлаживать)приложение с помощью c #

, когда вы уверены, что все функции вашего проекта перенесены в Windows Service
...