Échec de démarrage du service Windows: impossible de démarrer le service à partir de la ligne de commande ou du débogueur [dupliquer]

cette question a déjà une réponse ici:

  • Exécuter un Service Windows comme une application console 4 réponses

salut, je reçois ce message d'erreur

ne peut pas démarrer le service à partir de la ligne de commande ou du débogueur. Un service winwows doit d'abord être installé(en utilisant installutil.exe) et a ensuite commencé avec la commande ServerExplorer, Windows Services Afministrative tool ou NET START.

et je ne comprends pas pourquoi j'ai remarqué cette erreur. Et voici mon code:

{
    string Hash = "";
    string connectionstring = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;
    SqlConnection myConnection = new SqlConnection(connectionstring);
    SqlCommand myCommand = new SqlCommand("GetNullHash", myConnection);
    myCommand.CommandType = CommandType.StoredProcedure;
    myConnection.Open();
    SqlDataReader rdr = myCommand.ExecuteReader();

    while (rdr.Read())
    {
        string filename = @"" + rdr.GetString(3);
        filename = System.IO.Path.Combine(filename, rdr.GetString(2));
        filename = System.IO.Path.Combine(filename, rdr.GetString(1));
        Hash = rdr.GetString(0);
        Hash = computeHash(filename);

    }
    myConnection.Close();
    return Hash;
}
45
demandé sur Ria 2012-07-20 10:07:17

6 réponses

Regarder cette vidéo , j'ai eu la même question. Il vous montre comment déboguer le service.

voici ses instructions en utilisant le modèle de base du Service c# Windows dans Visual Studio 2010/2012.

ajoutez ceci au Service1.fichier cs:

public void onDebug()
{
    OnStart(null);
}

vous changez votre Main() pour appeler votre service de cette façon si vous êtes dans la Configuration de la solution de débogage Active.

static void Main()
{
    #if DEBUG
    //While debugging this section is used.
    Service1 myService = new Service1();
    myService.onDebug();
    System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);

    #else
    //In Release this section is used. This is the "normal" way.
    ServiceBase[] ServicesToRun;
    ServicesToRun = new ServiceBase[] 
    { 
        new Service1() 
    };
    ServiceBase.Run(ServicesToRun);
    #endif
}

Gardez à l'esprit que, bien que ce est une excellente façon de déboguer votre service. Il n'appelle pas OnStop() à moins que vous l'appeliez explicitement similaire à la façon dont nous avons appelé OnStart(null) dans la fonction onDebug() .

57
répondu Cesar 2017-01-31 06:42:32

pour installer votre service manuellement

pour installer ou désinstaller le service windows manuellement (qui a été créé en utilisant .net Framework) utilisez l'utilitaire InstallUtil.exe . Cet outil se trouve dans le chemin suivant (utiliser le numéro de version du cadre approprié).

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe

à installer

installutil yourproject.exe

pour désinstaller

installutil /u yourproject.exe

voir: Comment faire: installer et désinstaller les Services (msdn)

installer un service programmatique

pour l'installation du service par programme utilisant C# voir la classe ServiceInstaller 1519190920" (c-sharpcorner) .

26
répondu Ria 2012-07-20 06:16:44

votre code n'a rien à voir avec l'installation de service, ce n'est pas le problème.

afin de tester le service, vous devez l'installer comme indiqué.

pour plus d'information sur l'installation de votre service: installation et Désinstallation des Services

0
répondu ChrisBint 2012-07-20 06:11:26

je vais suggérer la création d'un projet de configuration pour les raisons tout en déployant cela semble la meilleure conviction , pas de maux de tête de copier des fichiers manuellement. Suivez le Windows service d'installation de la création tutoriel et vous savez comment le créer. Et cet exemple est pour vb.net mais c'est la même chose pour n'importe quel type.

0
répondu bhuvin 2012-07-20 06:17:46

pour installer le CMD ouvert et taper {YourServiceName} -i une fois son type d'installation tapez NET START {YourserviceName} pour démarrer votre service

pour désinstaller

pour désinstaller le CMD ouvert et taper NET STOP {YourserviceName} une fois arrêté tapez {YourServiceName} -u et il faut désinstaller

0
répondu JohnnBlade 2012-07-20 06:18:01

Goto App.config

trouver

<setting name="RunAsWindowsService" serializeAs="String">
    <value>True</value>
  </setting>

mis à False

-1
répondu TuanDPH 2014-12-26 04:01:29