Bonjour,
Dans le cadre d'un projet, je souhaite créer un service qui mettrait à jour ma base de données et qui envoie un mail aux clients dans un certains cas toutes les 15 minutes.
J'ai suivi les différents tutoriaux disponibles sur internet pour créer mon service. Lorsque je créé mon service sans compléter le code pour le OnStart() ou OnStop(), j'arrive à lancer mon service. Certes rien ne se passe, mais je peux lancer mon service. J'ai choisi d'intégrer le projet contenant mon service dans ma solution complète (contenant le reste de mon application). Je me retrouve donc avec cette arborescence :
Hors comme je l'ai dis, je souhaite envoyer des mails toutes les 15 minutes. J'ai donc ajouté un Timer dans le Designer de mon service pour lequel je définit son intervalle de temps et pour lequel je définit le code pour la fonction Tick(). Je lance le Timer lorsque je démarre mon service. Je me retrouve avec le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.Diagnostics; using System.Linq; using System.Net.Mail; using System.ServiceProcess; using System.Text; using System.Threading.Tasks; namespace Extranet.Services { public partial class ServiceAlerte : ServiceBase { public ServiceAlerte() { InitializeComponent(); } protected override void OnStart(string[] args) { timer_Envoie.Start(); } protected override void OnStop() { timer_Envoie.Stop(); } private void timer_Envoie_Tick(object sender, EventArgs e) { EnvoieMail(); } private void EnvoieMail(){ try { SmtpClient client = new SmtpClient(ConfigurationManager.AppSettings["IP"], int.Parse(ConfigurationManager.AppSettings["Port"])); //Authentification obligatoire pour sortir ?! client.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["Compte"], ConfigurationManager.AppSettings["MDP"]); //Expediteur MailAddress _from = new MailAddress("mail", "Entête", Encoding.UTF8); //Destinataire MailAddress _to = new MailAddress("mailTo"); //Message associé à l'expediteur et le destinataire MailMessage message = new MailMessage(_from, _to); //Texte du mail : String body = "Some texte"; //Construction du body message.Body = body; message.BodyEncoding = Encoding.UTF8; message.Subject = "Sujet"; message.SubjectEncoding = Encoding.UTF8; //Envoie du message client.Send(message); message.Dispose(); } catch (Exception ex) { throw new ApplicationException(ex.Message); } } }
Mon code est simplifié afin d'expliquer mon problème. Lors de la création de mon service aucun problème, je le retrouve bien dans la liste de mes services existants. Le problème intervient lorsque je souhaite le lancer, je tombe sans cesse sur cette erreur que je ne comprend pas vraiment :
Quelqu'un saurait-il m'aider ? Merci.
Partager