Accueil > Forum > > > > Problèmes de création d'un service Windows
Problèmes de création d'un service Windows
vendredi 25 novembre 2005 à 11:23:05 |
Problèmes de création d'un service Windows

nyoto
|
Bonjour à tous, Ne développant pas depuis très longtemps en .Net je galère grave pour créer un service windows récupérant automatiquement à intervalles de temps données des images situées sur le web. Voilà ci-dessous mon code source, il est important de noter que j'avais à la base codé une application windows et que cette récupération fonctionnait correctement ... Merci d'avance ...
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Net;
using System.Timers;
using System.Threading;
using System.Xml;
using System.Configuration.Install;
using System.Web.Mail;
namespace ServiceFStatsTNT
{
// Cette classe permet de pouvoir compiler le service afin d'en obtenir un executable binaire
// Cependant, ce n'est pas suffisant pour installer le service windows. Ceci permet juste d'avoir un .exe
// Il faudra une etape supplementaire pour installer le service sur votre machine
[RunInstaller( true)]
public class MyProjectInstaller: Installer
{
public MyProjectInstaller() :base()
{
this.Committed += new InstallEventHandler(MyProjectInstaller_Committed);
this.Committing += new InstallEventHandler(MyProjectInstaller_Committing);
//Instantie les installeurs
ServiceInstaller monServiceInstaller = new ServiceInstaller();
ServiceProcessInstaller monProcessInstaller = new ServiceProcessInstaller();
// Le nom du service doit etre egal au nom de la classe ServiceBase dont on derive
//(voir le Public Sub New() de la classe MonService pour comprendre)
monServiceInstaller.ServiceName = "ServiceFStatsTNT";
monServiceInstaller.DisplayName = "ServiceFStatsTNT";
// Ajouter les installeurs à la collection (l'ordre n'est pas important)
this.Installers.Add(monServiceInstaller);
// Le service sera lancé sous le compte Systeme
monProcessInstaller.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
// Ajouter les installeurs à la collection (l'ordre n'est pas important)
this.Installers.Add(monProcessInstaller);
}
private void MyProjectInstaller_Committing(object sender, InstallEventArgs e)
{
Console.WriteLine("");
Console.WriteLine("Committing Event occured.");
Console.WriteLine("");
}
private void MyProjectInstaller_Committed(object sender, InstallEventArgs e)
{
Console.WriteLine("");
Console.WriteLine("Committed Event occured.");
Console.WriteLine("");
}
public override void Install(IDictionary savedState)
{
base.Install(savedState);
}
public override void Commit(IDictionary savedState)
{
base.Commit(savedState);
}
public override void Rollback(IDictionary savedState)
{
base.Rollback(savedState);
}
}
public class Service1 : System.ServiceProcess.ServiceBase
{
/// <summary>
/// Variable nécessaire au concepteur.
/// </summary>
private System.ComponentModel.Container components = null;
public Service1()
{
// Cet appel est requis par le Concepteur de composants Windows.Forms.
InitializeComponent();
// TODO : ajoutez les initialisations après l'appel à InitComponent
ServiceName = "ServiceFStatsTNT";
}
// Le point d'entrée principal pour le processus
static void Main()
{
System.ServiceProcess.ServiceBase[] ServicesToRun;
// Plusieurs services utilisateurs peuvent s'exécuter dans le même processus. Pour ajouter
// un autre service à ce processus, modifiez la ligne suivante
// afin de créer un second objet service. Par exemple,
//
// ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
//
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service1() };
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}
/// <summary>
/// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
/// le contenu de cette méthode avec l'éditeur de code.
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
this.ServiceName = "ServiceFBoxStatsTNT";
}
/// <summary>
/// Nettoyage des ressources utilisées.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
/// <summary>
/// Démarrage du service.
/// </summary>
protected override void OnStart(string[] args)
{
try
{
// Lancement d'un thread qui se chargera du téléchargement
Thread th = new Thread(new ThreadStart(StartBoucle));
th.Start();
}
catch (Exception ex)
{
//ecrire l'erreur dans l'event log de la machine
EventLog.WriteEntry("ServiceFBoxStatsTNT", ex.Message, EventLogEntryType.Error, 15);
}
}
public void StartBoucle()
{
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed+= new ElapsedEventHandler(StartDownload);
// Définition de l'intervalle du Timer (toute les 60 minutes) 3600000
aTimer.Interval=6000;
aTimer.Enabled= true;
}
public void StartDownload(object source, ElapsedEventArgs e2)
{
try
{
// Création d'un objet WebClient (c'est lui qui permet de télécharger un fichier)
WebClient wc = new WebClient();
string dateactu = DateTime.Now.ToString("dd-MM-yy_HH-mm-ss");
string[] chaine = {"NRJ_12", "W9", "MTV_France", "Europe_2_TV", "Gulli", "NT1"};
//string chemin = "images/NRJ12_" + dateactu + ".jpg";
string laDate = DateTime.Now.ToString("dd/MM/yyyy");
string lHeure = DateTime.Now.ToString("HH:mm:ss");
int vari;
string cheminITV = "P:\\majvirus\\testTonio\\I-TV_" + dateactu + ".jpg";
wc.DownloadFile(@"http://audience.free.fr/graphs/i>TELE-part-3600.gif", @cheminITV);
for (vari=0; vari<=5; vari++)
{
string chemin = "P:\\majvirus\\testTonio\\" + chaine[vari] + "_" + dateactu + ".jpg";
// Lancement du téléchargement
// argument 1 : url du fichier source
// argument 2 : l'emplacement ou enregistrer le fichier sur le disque dur
wc.DownloadFile(@"http://audience.free.fr/graphs/" + chaine[vari] + "-part-3600.gif", @chemin);
}
// Destruction de l'objet WebClient
wc.Dispose();
// Et un petit message pour dire que le téléchargement est terminé
//MessageBox.Show("Le téléchargement est terminé", "info", MessageBoxButtons.OK, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
}
catch(Exception e)
{
EventLog.WriteEntry("FBoxStatsTNT", e.Message, EventLogEntryType.Error, 15);
}
}
/// <summary>
/// Arrêt du service.
/// </summary>
protected override void OnStop()
{
// TODO : ajoutez ici le code pour effectuer les destructions nécessaires à l'arrêt de votre service.
}
}
}
|
|
vendredi 25 novembre 2005 à 12:18:20 |
Re : Problèmes de création d'un service Windows
|
vendredi 25 novembre 2005 à 12:22:59 |
Re : Problèmes de création d'un service Windows

nyoto
|
Oui ok j'ai pa exactement tout dit ... Il semblerait après mise en place et lancement du service que clui-ci tente de faire son job mais il bloque lors de l'écriture de la première image et si on regarde l'emplacement de destination, un fichier image est bien créé mais il est vide et les autres images ne sont pas traités ...
|
|
vendredi 25 novembre 2005 à 12:26:47 |
Re : Problèmes de création d'un service Windows

TheSaib
|
Un exception dans les logs ?
|
|
vendredi 25 novembre 2005 à 12:30:06 |
Re : Problèmes de création d'un service Windows

nyoto
|
Oui ... Une exception s'est produite lors d'une demande Webclient (ça je m'en doutais ...) mais pas plus d'infos hélas ... Je nage grave et je bloque dessus depuis hier ... puis je ne suis qu'un newb !!!
|
|
vendredi 25 novembre 2005 à 12:38:44 |
Re : Problèmes de création d'un service Windows

TheSaib
|
Etre Newbie n'est pas une excuse.
Quelle ligne ?
|
|
vendredi 25 novembre 2005 à 12:44:39 |
Re : Problèmes de création d'un service Windows

TheSaib
|
JE pense que le problème vient du fait que le service tourne avec l'utilisateur "Local System" qui n'a pas les droits d'acceder au réseau et par conséquence de telecharger le fichier sur le net.
|
|
vendredi 25 novembre 2005 à 12:47:53 |
Re : Problèmes de création d'un service Windows

TheSaib
|
Une fois ton service installée change le compte qui le lance et çà devrait marcher.
Par ailleur je en sais pas pourquoi tu met tes noms de ficheir en dur sachant que la page de free peut te fournir un XML.
http://audience.free.fr/audience15.xml
|
|
vendredi 25 novembre 2005 à 13:03:15 |
Re : Problèmes de création d'un service Windows

nyoto
|
Ben paske j'my connais pas encore en XML ... mais effectivement c'est une façon différente d'aborder le prob !!! Je déj, je teste ta soluce et j'te tiens au courant ... En tout cas merci du coup de main !!!
|
|
vendredi 25 novembre 2005 à 14:55:48 |
Re : Problèmes de création d'un service Windows

nyoto
|
Flutte ... Ben j'ai exactement la même erreur avec un compte admin et idem en tentant mon écriture en local ...
|
|
Cette discussion est classée dans : public, system, service, void, using
Répondre à ce message
Sujets en rapport avec ce message
Forms en série... [ par immerczeck ]
Bonjour!Pourriez-vous m'aider à trouver l'erreur dans ce code, à chaque fois que je clique sur le button1, une fenêtre apparaît, mais elle reste bloqu
Executer un service a distance [ par cloud8716 ]
Bonjour,Je suis debutant en C# et je dois faire un programme qui permet de lister, demarrer et arreter des services sur une machine distante.Pour ce q
probleme d' interopérabilité [ par thmatew ]
Amis développeurs, bonjour,j'ai un petit souci, je n'arrive pas a utilisé une DLL que j'ai créer dans mon programme, c'est un petit programme tt simpl
Conversion Csharp => VB ou VB.Net [ par cboulas ]
Salut à tous je recherche à traduire le code CSharp suivant en VB ou VB.Net. Merci pour votre aide.private System.Timers.Timer SaveTimer;using System;
Generer des points aleatoirement !? [ par jimmy69 ]
Bonjour a tous ,Je suis sous visual studio . net et j'apprends le c sharp !Je me suis fait une class que j'ai nomme MyPoint.cs que voici :-----------
Serveur UDP [ par Sobieski ]
Salut.Je voudrais printer dans la console ce qui arrive en UDP sur le port 4321. J'ai fait un bout de code mais ca plante comme il faut :/ using Syste
c# [ par akodadi ]
j ai un probleme j veux afficher une forme et j comprens pa ces messages d bugs public override <FONT color=#000
WebService C# (variable non modifiée !!) [ par mesdevs ]
Bonjour, Je débute tout juste en C# (Visual Studio 2005), et j'ai déjà un problème (désolé si ça vous parait trivial, mais moi ça me prend la tête) :
[C#][ActiveX][Thread][HTML/Javascript] Evénements OK mais pas dans tous les cas [ par Mediant ]
Bonjour !Voilà, j'au dû me mettre au C# il y a quelque jours afin de réaliser un composant ActiveX. J'ai besoin que ce composant puisse m'envoyer des
Plusieurs structures imbriquées [ par F0ra ]
Bonjour, Je voudrais réaliser plusieurs structures imbriquées Comme : Couches[1].Neurons[1].w[1]=0 Dans le ficier Ia.cs : using System; using System
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|