Sto provando a eseguire un comando tramite prompt dei comandi da un'applicazione Web ASP.Net. Riesco a vedere l'avvio del processo in Task Manager sul server Web, tuttavia il processo rimane solo lì e non esce mai né esegue i comandi che ho specificato.Perché il comando "cmd.exe/C" non viene terminato quando viene chiamato tramite Process.Start()?
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C " +command;
startInfo.UserName = "myuser";
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.Domain = "mydomain";
startInfo.CreateNoWindow = true;
String pass = "mypass";
System.Security.SecureString secPass = new System.Security.SecureString();
foreach (char c in pass.ToCharArray())
{
secPass.AppendChar(c);
}
secPass.MakeReadOnly();
startInfo.Password = secPass;
process.StartInfo = startInfo;
process.Start();
//output = process.StandardOutput.ReadToEnd();
process.WaitForExit();
process.Close();
Ho provato entrambi con e senza leggere lo standard output.
L'applicazione si bloccherà su process.WaitForExit();
finché non avrò terminato il processo tramite il task manager.
Se provi a leggere l'output standard, hai guardato che cos'è lo standard output? Prova a leggere anche l'errore standard; potresti ricevere una sorta di messaggio di errore, forse uno che dice "Premi qualsiasi tasto per continuare ..." o qualcosa del genere. – GWLlosa
@ GWLlosa, sia l'output standard che l'errore standard sono vuoti. Ho pensato a "Premi qualsiasi tasto ..." così ho provato a scrivere un carattere sullo standard input, ma ancora niente. –
Perché eseguirlo tramite cmd? Perché non eseguirlo direttamente? –