IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Discussion :

[C#]Lancer une application depuis un WebService


Sujet :

Services Web

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 14
    Par défaut [C#]Lancer une application depuis un WebService
    Bonjour à tous,

    Je viens vers vous car je suis entrain de m'arracher les cheveux sur un problème

    Ce que je voudrais faire :

    Je dois depuis une fonction de mon WebService réalisé en C#, lancer une application avec des paramètres en ligne de commande, qui envoi des fichiers sur différents serveurs FTP.

    Cet exécutable est SyncBack et le lancement se fait de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\Program Files\2BrightSparks\SyncBackSE\SyncBackSE.exe" -m Profil1 Profil2
    Ce que j'ai testé :

    J'ai tout d'abord testé "Process.Start()" et également avec divers paramètres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Process myInfo = new Process();
    myInfo.StartInfo.FileName = ch_V_NomExe;
    myInfo.StartInfo.WorkingDirectory = ch_V_RepertoireExe;
    myInfo.StartInfo.Arguments = ch_V_Argument; 
    bool bo_Res = myInfo.Start();
    L'exécutable se lance bien cependant les profils passés en paramètres ne s'exécutent pas.
    J'ai donc pensé que la ligne de commande n'était pas bien gérée et j'ai créé un .bat qui me lance SyncBack.

    Quand je le lance à la main pas de problème tout fonctionne mais quand mon WebService le lance, SyncBack se lance mais n'exécute pas les profils.


    Peut être un problème de session qui fait que SERVICE RESEAU n'a pas le droit d'exécuter les profils, du coup j'en suis a essayer de lancer mon .bat depuis une session utilisateur mais je n'y arrive pas.

    Je le fais de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    using (Process process = new Process())
                    {
                        string pathToProgram = @"C:\test.bat";
                        string userName = "mon_user";
                        string password = "mon_pwd";
     
                        ProcessStartInfo processStartInfo = new ProcessStartInfo();
                        processStartInfo.FileName = pathToProgram;
                        processStartInfo.CreateNoWindow = true;
                        processStartInfo.UseShellExecute = false;
                        processStartInfo.RedirectStandardOutput = true;
                        processStartInfo.RedirectStandardError = true;
                        processStartInfo.UserName = userName;
                        processStartInfo.Password = new   System.Security.SecureString();
     
                        char[] passwordChars = password.ToCharArray();
     
                        foreach (char c in passwordChars)
                        {
                            processStartInfo.Password.AppendChar(c);
                        }
     
     
                        process.StartInfo = processStartInfo;
                        process.Start();
     
                    }
    Pourriez vous m'aider Svp ?
    Merci.
    Greg

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Par défaut
    Salut Greg34000,

    Oui cela peut être un problème d'exécution ou un problème d'accès au répertoire où se trouve ton fichier *.bat et un problème de droit (user: "SERVICE RESEAU") d'accès du WebService au répertoire où tes fichiers doivent être copiés.

    Cédric

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 14
    Par défaut
    Merci Cédric !
    C'est également ce que je m'étais dit, mais j'ai pourtant bien vérifié j'ai ajouté les droits à SERVICE RESEAU sur tous les répertoires concernés.

    Mon Web Service accède bien au .bat puisqu'il le lance et le bat s'exécute, du coup certainement un pb de SyncBack qui ne retrouve pas ses profils ...

    Faites programmeur qu'ils disaient ... lol

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 14
    Par défaut
    Le soucis c'est que quand j'exécute ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    using (Process process = new Process())
                    {
                        string pathToProgram = @"C:\test.bat";
                        string userName = "mon_user";
                        string password = "mon_pwd";
     
                        ProcessStartInfo processStartInfo = new ProcessStartInfo();
                        processStartInfo.FileName = pathToProgram;
                        processStartInfo.CreateNoWindow = true;
                        processStartInfo.UseShellExecute = false;
                        processStartInfo.RedirectStandardOutput = true;
                        processStartInfo.RedirectStandardError = true;
                        processStartInfo.UserName = userName;
                        processStartInfo.Password = new   System.Security.SecureString();
     
                        char[] passwordChars = password.ToCharArray();
     
                        foreach (char c in passwordChars)
                        {
                            processStartInfo.Password.AppendChar(c);
                        }
     
     
                        process.StartInfo = processStartInfo;
                        process.Start();
     
                    }
    J'ai une erreur de ce style :

    System.ComponentModel.Win32Exception: Le relais a reçu des données incorrectes
    à System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
    à System.Diagnostics.Process.Start()

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Par défaut
    Dans la variable processStartInfo, si tu indique dans la propriété:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    processStartInfo.WorkingDirectory = "path du répertoire où doit s'exécuter ton programme"
    Est-ce que cela changer quelque chose?

    Cédric

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 14
    Par défaut
    J'ai essayé cela n'a rien changé ^^ Mais en tout cas il y'avait de l'idée

    Par contre j'ai essayé sur un autre serveur et le message d'erreur est un poil différent.

    System.ComponentModel.Win32Exception: Le chemin d'accès spécifié est introuvable
    at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
    Merci quand même en tout cas.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Par défaut
    Bon sur l'autre serveur depuis lequel tu as essayé tu n'a peut être pas les droit d'accès à:

    "C:\Program Files\2BrightSparks\SyncBackSE\SyncBackSE.exe" -m Profil1 Profil2
    oou à :
    ou à :

    string pathToProgram = @"C:\test.bat";
    A part de copier des fichiers, est-ce que ton application utiliserait d'autres ressources auquel le Service Web n'aurait pas?

    Cédric

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 14
    Par défaut
    Après moultes essais divers et variés, j'ai réussi à lancer SynckBack avec ma Session et non pas le service réseau. (youpi)

    Cependant les profils ne s'exécutent toujours pas.

    Et alors là bizarre bizarre, avec le code qui me sert à lancer SyncBack (Merci à ton WorkingDirectory) je ne peux pas lancer mon .bat, ça ne fonctionne pas...

    Merci en tout cas pour ton temps.

Discussions similaires

  1. Comment lancer une application depuis un service ?
    Par bhf37 dans le forum Langage
    Réponses: 7
    Dernier message: 05/03/2009, 14h05
  2. Réponses: 3
    Dernier message: 31/08/2008, 16h33
  3. Lancer une application depuis une fenêtre gtk
    Par cyrilleG dans le forum GTK+ avec Python
    Réponses: 11
    Dernier message: 29/09/2007, 22h03
  4. Réponses: 9
    Dernier message: 11/01/2007, 21h23
  5. [VB.NET]Lancer une application depuis MonProg
    Par PM_calou dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/09/2006, 11h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo