2010-11-25 17 views
1

Existe-t-il un outil ou une méthode pour tester mon service Windows? il fonctionne bien avec Visual Studio 2010.Outils pour tester les services Windows nouvellement créés?

J'utilise Advanced Installed pour créer un package d'installation (MSI) mais il ne démarre pas!

acclamations

+0

Comment essayez-vous de l'exécuter? –

+0

Avez-vous des erreurs? Si oui, de quel genre? – Rhapsody

+0

@Rhapsody J'utilise Advanced installé pour installer le service mais il ne démarre pas! –

Répondre

4

Voir this answer par lubos hasko pour faciliter le débogage et la facilité également des installations de service (que je l'ai fait avec beaucoup de succès). L'adaptation de log4net et son enregistrement dans la console en mode interactif est également recommandé.

class TheService : ServiceBase 
{ 
    static void Main(string[] args) 
     { 
      if (!Environment.UserInteractive) 
      { 
       Run(new TheService()); 
      } 
      else 
      { 
       // If interactive, start up as a console app for easy debugging and/or installing/uninstalling the service 
       switch (string.Concat(args)) 
       { 
        case "/i": 
         ManagedInstallerClass.InstallHelper(new[] { Assembly.GetExecutingAssembly().Location }); 
         break; 
        case "/u": 
         ManagedInstallerClass.InstallHelper(new[] { "/u", Assembly.GetExecutingAssembly().Location }); 
         break; 
        default: 
         Console.WriteLine("Running service in console debug mode (use /i or /u to install or uninstall the service)"); 
         var service = new TheService(); 
         service.OnStart(null); 
         Thread.Sleep(Timeout.Infinite); 
         break; 
       } 
      } 
     } 
    } 
1

Avez-vous une exploitation forestière dans votre application? Ce serait probablement le premier endroit pour vérifier un moyen de le réparer. Il est assez difficile d'avoir un «outil» pour tester «certains services Windows». Si vous avez plus de détails à partir de la journalisation et que vous ne pouvez pas comprendre ce qui ne va pas, faites le savoir afin que nous puissions vous aider.

1

Vous ne pouvez pas exécuter directement un service Windows: vous devez installer le service et le démarrer. Comme l'installation d'un service a tendance à être gênante lors du développement, il vaudra la peine de modifier le code d'amorçage de votre service pour détecter s'il est exécuté en tant que service ou interactivement et, dans ce dernier cas, afficher un formulaire Windows.

ServiceBase service = ...; 

if (Environment.UserInteractive) 
{ 
    // run as application 
    Application.EnableVisualStyles(); 
    Application.Run(new SomeForm()); // the form should call OnStart on the service 
} 
else 
{ 
    // run as service 
    ServiceBase.Run(service); 
} 
1

Je suppose que vous utilisez une classe d'installation pour créer et installer le service (dérivé de System.Configuration.Install.Installer)? Si c'est le cas, placez cette ligne de code dans le ctr du programme d'installation ou de la commande OnBeforeInstall. Vous pouvez ensuite attacher un débogueur et déboguer le processus d'installation:

System.Diagnostics.Debugger.Break()