J'ai un programme de ligne de commande qui s'exécute de manière interactive depuis la fenêtre DOS. Lorsque j'essaie d'exécuter la même commande et les mêmes arguments depuis une application asp.net, cela échoue. L'application Web a le script & Autorisations d'exécution. À des fins de test, j'ai donné des autorisations de contrôle total au groupe Tout le monde pour le dossier entier de l'application Web et pour le dossier contenant le fichier .exe (réside dans les fichiers programme). L'application web utilise la sécurité intégrée de Windows (pas d'anonyme) donc elle devrait utiliser mes informations d'identification et je suis un administrateur. En cours d'exécution dans Windows XP.Erreur lors de l'exécution d'une ligne de commande .exe à partir d'ASP.net
Le code ci-dessous exécute la commande. Le nom de fichier et les arguments ont l'air bien. Cependant, le p.ExitCode = 1 au lieu de 0. Comment résoudre les problèmes et savoir pourquoi le processus échoue? J'ai regardé le processus dans le débogueur et je vois des exceptions 'System.InvalidOperationException' mais cela ne me dit pas grand-chose. Pourquoi InvalidOperationException?
Process p = new Process();
p.StartInfo.FileName = filename;
p.StartInfo.Arguments = arguments;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = true;
p.StartInfo.RedirectStandardOutput = false;
p.StartInfo.RedirectStandardError = false;
p.Start();
p.WaitForExit();
if (0 != p.ExitCode)
{
ApplicationException ex =
new ApplicationException(string.Format("\"{0} {1}\" returned ({2})", filename, arguments, p.ExitCode));
throw ex;
}
Le fichier .exe ne renvoie aucun résultat après son exécution. Quand il fonctionne avec succès, il revient à l'invite DOS. –
Je pensais que peut-être en cas d'erreur, l'application de la console pourrait effectivement donner une sortie (comme une exception non gérée bouillonnant jusqu'à l'invite de commande). Sans une idée de ce qu'il fait qui est invalide, c'est trop difficile à dire. Une possibilité probable est qu'elle essaie de faire quelque chose qui nécessite une fenêtre (par exemple en attendant l'entrée de l'utilisateur, ou en demandant plus obscurément une poignée de fenêtre). En fonction de l'application, votre appel en cas d'échec peut vous donner des indices sur la raison pour laquelle ... – fyjham