Le grand Jisay
Messages postés100Date d'inscriptionmardi 8 mai 2007StatutMembreDernière intervention18 février 2011
-
22 nov. 2007 à 09:15
bernie666
Messages postés427Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention29 janvier 2008
-
22 nov. 2007 à 16:29
Bonjour à tous !
Voila, j'ai un projet pour mon cours de programmation C#. Ce projet c'est un service Windows. Mon service doit envoyer des mails à intervalles réguliers, pour le code aucun problème. C'est au niveau du démarrage du service que ca se passe mal. Mon service s'installe avec un fichier .msi. Je lance ce fichier, le service s'installe sans problème, mais quand je démarre mon service, là c'est le drame... J'ai le message d'erreur qui suit :
"Le service Service Envoi Mail sur Ordinateur local a démarré puis s'est arrêté. Certains services peuvent s'arrêter automatiquement s'ils n'ont aucune tâche à effectuer, par exemple, le service des alertes et les journaux de performances."
Au départ je pensais que la cause était mon service : il ne devait qu'écrire dans le gestionnaire d'événements mais j'ai ensuite ajouter l'envoi de mails mais rien n'y fait : toujours se message d'erreur qui s'affiche au démarrage.
Je vous demande votre aide, j'ai sillonné le web mais je n'ai toujours pas trouvé la solution à mon problème.
bernie666
Messages postés427Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention29 janvier 20081 22 nov. 2007 à 11:21
Salut,
Est ce que tu traces les exceptions dans le journal d'application ?
tu dois avoir une erreur quelque part qui te fait planter le service au démarage.
Sinon tu peux essayer de copier le code au niveau de ton service NT dans une application console pour simuler le lancement du service et passer en mode debug pas a pas afin de voir ce qu'il ce passe.
Le grand Jisay
Messages postés100Date d'inscriptionmardi 8 mai 2007StatutMembreDernière intervention18 février 20112 22 nov. 2007 à 11:37
Salut,
Dans l'Observateur d'événement j'ai un message d'erreur :
Le service ne peut pas être démarré. System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
à Service_Mail.Service1.OnStart(String[] args)
à System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)
Je ne comprends pas trop ce que ca veut bien dire et je n'ai pas trouvé non plus d'aide sur le net.
J'ai également tenté de débugué mon service mais pas moyen, il ne s'arrête nulle part.
bernie666
Messages postés427Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention29 janvier 20081 22 nov. 2007 à 11:45
Afin de pouvoir débuguer ton service, il faut attacher le process de ce dernier au debugger de visual studio mais vu que c'est dans le onStart tu va avoir du mal l'attacher. C'est pour ca que le simuler dans une application console peut etre une bonne solution.
Sinon pour l'erreur que tu as ... c'est juste au niveau de ton code dans le on start que tu a un objet qui n'est pas instancier.
Le grand Jisay
Messages postés100Date d'inscriptionmardi 8 mai 2007StatutMembreDernière intervention18 février 20112 22 nov. 2007 à 12:14
Yep,
Voila mon code :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
using System.Threading;
namespace Service_Mail
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
// TODO : ajoutez ici le code pour démarrer votre service.µ
timer1.Interval = 6000;
timer1.Start();
eventLog1.WriteEntry("Service démaré");
}
protected override void OnStop()
{
// TODO : ajoutez ici le code pour effectuer les destructions nécessaires à l'arrêt de votre service.
eventLog1.WriteEntry("Service stoppé");
}
Ici ce n'est juste qu'un truc bidon pour voir si mon service démarrait correctement (sans stoppé) et je précise que le Timer n'est pas un Timer de windows Form mais bien un Timer pour service windows
Merci pour ton aide bernie666 !
Vous n’avez pas trouvé la réponse que vous recherchez ?
bernie666
Messages postés427Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention29 janvier 20081 22 nov. 2007 à 14:57
Tu as installer ton service avec le compte par defaut ? ou avec ton compte user ? c'est peut etre un probleme de droit car avec le compte par defaut tu n'as pas les droits d'écrire dans le journal des évenements.
De plus il faut que tu rajoute la clef de registre :
Ici tu mets une nouvelle clée qui a le meme nom que ton Service
ajouter une valeure de chaine "EventMessageFile"
qui a comme valeure : "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll"
Tu peux également encapsuler ton code dans des blocs Try Catch afin de ne pas faire peter ton service ;)