1

J'écris un service Windows qui fera beaucoup de communication réseau (copier beaucoup de fichiers dans des dossiers partagés et modifier la base de données).Bon exemple Service .Net Windows pour signaler une erreur

J'ai besoin d'un moyen d'informer un utilisateur (s'il est connecté) de toute exception/erreur. Mon problème est de faire un groupe d'erreurs pour l'envoyer (par email) à l'adresse de l'administrateur.

Je suis conscient de la journalisation des événements ni bulle de notification de la barre d'état système, mais l'administrateur ne consulte pas ce journal, il préfère le courrier électronique.

Le composant idéal est ASP.NET Health Monitoring, mais fonctionne uniquement pour IIS et un composant similaire est requis pour les services Windows.

N'importe quel exemple de service Windows Service en C# ou une autre langue dans .net (avec le code source) sur ce problème ??

Répondre

2

Si vous avez juste besoin d'un moyen d'envoyer une notification par courrier électronique, .Net a SMTP et les types de messagerie pour prendre soin de cela. Les notifications par e-mail sont courantes dans les logiciels et c'est pourquoi les fonctionnalités couramment utilisées ont été intégrées dans la classe de base lib.

Vous pouvez utiliser des objets SmtpClient, MailAddress et MailMessage pour accomplir ce dont vous avez besoin simplement pour envoyer une notification par courrier électronique. Bien sûr, vous devez avoir accès à un serveur SMTP pour transmettre le courrier, alors découvrez quelle est l'adresse de l'hôte pour configurer correctement votre application. Voici quelques exemples:

SmtpClient mailClient = new SmtpClient("smtp.fu.bar"); 
MailAddress senderAddr = new MailAddress("[email protected]"); 
MailAddress recipAddr = new MailAddress("[email protected]"); 
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); 

Cet exemple est juste le code droit, mais il serait préférable de le mettre dans une méthode réutilisable comme ceci:

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

J'ai besoin échantillon de fenêtres service qui informe des e-mails. Si le service a plusieurs threads, je sauvegarde les erreurs dans la liste , dans la base de données, dans les fichiers ?? puis, lorsque le processus est terminé, envoyez un e-mail? merci – Kiquenet

+0

SmtpClient DOIT avoir une fonction SendAsync() à utiliser si vous voulez empêcher le blocage des threads. Vous pouvez écrire votre méthode pour la transmettre dans la liste des erreurs afin de pouvoir effectuer un appel de méthode asynchrone sur chaque erreur de la collection. Je suis désolé de ne pouvoir reproduire tout un service ici pour vous. Avez-vous besoin de plus d'aide que d'envoyer des notifications? S'il vous plaît rappelez-vous ce site est pour l'aide, pas pour compléter votre travail pour vous. – jlafay

+0

Demandez seulement pour n'importe quel code d'échantillon dans net ou codeplex, sourceforge ... pas de travail complet pour moi, seulement réutiliser de bons composants testés gratuits, et faire de bonnes pratiques et des modèles – Kiquenet