web-dev-qa-db-fra.com

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

salut je reçois cette erreur

Impossible de démarrer le service à partir de la ligne de commande ou du débogueur. Un service Winwows doit d'abord être installé (à l'aide de installutil.exe), puis démarré à l'aide de ServerExplorer, de l'outil Windows Services Afministrative ou de la commande NET START.

et je ne comprends pas pourquoi im obtenir 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;
}
52
paxcow

Regardez cette vidéo , j'avais la même question. Il vous montre également comment déboguer le service.

Voici ses instructions à l'aide du modèle de service Windows C # de base dans Visual Studio 2010/2012.

Vous ajoutez ceci au fichier Service1.cs:

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

Vous modifiez votre Main () pour appeler votre service de cette manière si vous êtes dans la configuration de la solution active DEBUG.

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
}

N'oubliez pas qu'il s'agit d'un moyen génial de déboguer votre service. Il n’appelle pas OnStop() à moins que vous ne l’appeliez explicitement de la même manière que nous avons appelé OnStart(null) dans la fonction onDebug().

71
Cesar

Pour installer votre service manuellement

Pour installer ou désinstaller manuellement le service Windows (créé à l'aide de .NET Framework), utilisez l'utilitaire InstallUtil.exe. Cet outil se trouve dans le chemin suivant (utilisez le numéro de version du framework approprié).

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

À installer

installutil yourproject.exe

Pour désinstaller

installutil /u yourproject.exe

Voir: Comment: installer et désinstaller des services (msdn)

Installer le service par programme

Pour installer le service par programme en utilisant C #, voir la classe suivante ServiceInstaller (c-sharpcorner).

30
Ria

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

Afin de tester le service, vous devez l’installer comme indiqué.

Pour plus d'informations sur l'installation de votre service: Installation et désinstallation de services

0
ChrisBint

Je suggérerai de créer un projet de configuration pour les raisons lors du déploiement, ce qui semble être la meilleure solution, aucun problème de copie manuelle de fichiers. Suivez le tutoriel de création de service Windows et vous saurez le créer. Et cette instance est pour vb.net mais c'est la même pour tous les types.

0
bhuvin

Pour installer Open CMD et taper {YourServiceName} -i Une fois installé, taper NET START {YourserviceName} Pour démarrer votre service.

désinstaller

Pour désinstaller Open CMD et taper NET STOP {YourserviceName} Une fois arrêté taper {YourServiceName} -u Et il devrait être désinstallé

0
JohnnBlade