Problème de Process.Start depuis une page ASPX

Problème de Process.Start depuis une page ASPX - C#/.NET managed - Programmation

Marsh Posté le 30-04-2007 à 10:48:26    

Bonjour à tous,
 
Je rencontre actuellement un probleme assez embetant sur une page ASP.net toute bête.
 
L'objectif de celle ci, est de lancer une application sur le serveur. Cette application est ensuite chargée de dialoguer avec les pages web de l'appli, via Remoting .NET.
 
Le probleme est donc que lorsque le Process.Start est appelé, le processus est bien présent dans le task manager, mais n'apparait nulle part sur le serveur (le serveur étant mon pc soit dit en passant), et la consommation mémoire est très faible (même pas 1mo).
 
Après avoir effectué quelques tests, j'ai pu me rendre compte que l'executable server.exe marchait partiellement (les threads reseau sont ok, mais les codes du style MessageBox.Show() dans le thread principal ne marchent pas, et aucune form n'apparait).
 
J'ai tenté de me renseigner a droite et à gauche, sans trouver vraiment de reponse (hormis des fix datant de 2004,pour FW 1.0).
 
Bref, si quelqu'un peut m'aider sur ce point la....
 
Voici le code :

Code :
  1. protected void Page_Load(object sender, EventArgs e)
  2.     {
  3.             ProcessStartInfo s = new ProcessStartInfo(@"F:\MonExe.exe", "debug" );
  4.             s.UseShellExecute = true;
  5.             s.ErrorDialog = true;
  6.             s.WindowStyle = ProcessWindowStyle.Normal;
  7.             Process p = Process.Start(s);
  8. }


 
A savoir que j'ai déja essayé différents methodes(avec et sans ShellExecutte, en changeant le workinDirectory, en utilisant les fonctions Impersonate() des WindowsIdentity...)
 
Pour la petite info, tout ce bouzin tourne sous Vista avec IIS7. Sur une autre machine sous XP, y a pas de soucis, ca se lance sans probleme (IIS 5.1).
 
Je suspecte donc le couple IIS7 / Vista d'être ultra sécurisé à ce niveau, mais je ne trouve rien pour regler le soucis...
 
Merci d'avance.


Message édité par x1800+ le 30-04-2007 à 10:53:09
Reply

Marsh Posté le 30-04-2007 à 10:48:26   

Reply

Marsh Posté le 30-04-2007 à 12:31:16    

Ton exe, c'est un service Windows non ?
Si oui alors c'est normal.
 
Un service Windows n'est pas exécuté dans la session courante, c'est ce qui fait qu'il restera actif même si tu changes de session.
C'est pour ça que dedans il ne peut pas y avoir d'interface utilisateur (MessageBox.Show()) et qu'il n'apparaît pas dans les processus de la session...

Reply

Marsh Posté le 30-04-2007 à 19:54:22    

Il ne s'agit justement pas d'un service windows, mais d'un executable WinForms tout ce qu'il y a de plus basique.
 
De plus, meme si je met en executable cmd.exe ou notepad.exe, ca me fait pareil.
 
J'ai regardé aussi du coté de l'UAC de Vista, normalement c'est bon de ce côté aussi...Donc j'avoue que je sèche pas mal...

Reply

Marsh Posté le 30-04-2007 à 20:50:24    

comme je le prédisais, vista c'est vraiment de la merde en boite.  
 
Petite question? tu n'es pas un peu félé de développer pour Vista pour le moment? J'ai vraiment l'impression que son utilisation n'est pas du tout adapté à cela et que bonjour pour régler la sécurité facilement. La preuve avec ton problème. :(

Reply

Marsh Posté le 30-04-2007 à 20:53:36    

Je dois être un peu félé oé...
 
Comme tu dis, pour régler la sécurité, c'est pas super simple, mais je vais continuer de chercher encore un peu.
A force de vouloir trop sécuriser...Ca em**** ceux qui codent. Mais bon, doit bien y avoir une solution...
 
Si vraiment je trouve rien, alors je repasserais a un "ancien" windows...
 
Et pour répondre a Mose : C'est bel et bien un executable tout ce qu'il y a de plus normal, et non un service :)

Reply

Marsh Posté le 08-02-2008 à 14:54:01    

Ah tu trouvé une solution à ton problème ?
 
Je suis sur xp pro et je suis bloqué comme toi.
Si tu as eu une piste merci de me la communiquer svp.

Reply

Marsh Posté le 08-02-2008 à 20:14:29    

Juste une petite piste.  
Les pages Web ASPX tourne en général avec un user windows particulié. "ASPNET" ou "NETWORK SERVICES". Peux-être que le problème vient simplement que ce user n'a pas les droits suffisant pour exécuter le fichier?
 
A essayer.  
Personnellement, je trouve cela bizzare qu'on puisse lancer une winforms à partir d'une page Web. Un service Windows est beaucoup plus adapté à cela, ou un Web Services.

Reply

Marsh Posté le 10-02-2008 à 11:06:02    

Non, malheureusement j'avais pas de solution miracle (a part revenir sous xp dans mon cas)  [:petrus75]
 

Citation :

Les pages Web ASPX tourne en général avec un user windows particulié. "ASPNET" ou "NETWORK SERVICES". Peux-être que le problème vient simplement que ce user n'a pas les droits suffisant pour exécuter le fichier?


 
Dans le cas que j'avais, l'executable se lancait, mais le probleme se situait au niveau de l'affichage des forms, messageBox etc.
Probablement parceque un executable lancé depuis un user ASPNET ou NETWORK SERVICE n'a pas le droit d'afficher des forms (ou comme disait Mose pour les services, ne s'execute pas dans la session user courante)
 
 

Citation :

Personnellement, je trouve cela bizzare qu'on puisse lancer une winforms à partir d'une page Web. Un service Windows est beaucoup plus adapté à cela, ou un Web Services.


 
Je suis tout a fait d'accord avec toi. J'étais complétement taré de vouloir faire ça a l'époque  :o
Pour ca d'ailleurs que j'ai abandonné cette idée pour faire un systeme totalement différent (un service windows qui est chargé de lancer l'executable qui n'est plus qu'une console que j'ai pas besoin de voir tout le temps :) )
 
 
Dans tout les cas, lancer une application winform sur un serveur...Ca a pas énormément d'interet  [:petrus75]


Message édité par x1800+ le 10-02-2008 à 11:06:40
Reply

Marsh Posté le 31-10-2008 à 08:51:40    

Bonjour,
 
Est ce que vous avez trouvé une solution pour ce problème ?  
 
Je suis dans la même situation, à la différence que mon exécutable est à la base une appli Win32 (c++), mais que dans les arguments je précise qu'elle doit s'exécuter en mode silencieux, donc pas de fenêtres. et malgré ça le processus reste bloqué.
 
Quand j'essaye le même code avec une application console, cela marche super.
 
Est ce que avez idée de la sourec du problème ou comment le contourner ?
 
Merci

Reply

Marsh Posté le 31-10-2008 à 13:21:41    

Bonjour,
 
Malheureusement je n'avais trouvé aucune solution. Je penses que ça viens simplement des règles de sécurité qui bloque le lancement des appli depuis un compte donné (ASP.NET ou NETWORKSERVICE peut-être).
 
Donc comme indiqué dans mon dernier message, la seule solution que j'avais trouvé était de faire passer tout ça par un service windows :s

Reply

Marsh Posté le 31-10-2008 à 13:21:41   

Reply

Marsh Posté le 31-10-2008 à 13:57:10    

ou de changer le compte utilisateur faisant tourner le process ASPX


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed