2017-10-06 3 views
0

je le code suivant dans mon application console asp.net: -Essayer de lancer plusieurs lignes cmd commande dans mon application console asp.net soulevé l'erreur suivante « StandardIn n'a pas été redirigé »

var processInfo = new ProcessStartInfo("cmd.exe"); 
processInfo.CreateNoWindow = true; 
processInfo.UseShellExecute = false; 
processInfo.RedirectStandardError = true; 
processInfo.RedirectStandardOutput = true; 

var process = Process.Start(processInfo); 
process.StandardInput.WriteLine("nslookup"); 
process.StandardInput.WriteLine("set type=mx"); 
process.StandardInput.WriteLine(domainname); 

process.OutputDataReceived += (object sender, DataReceivedEventArgs e) => 
Console.WriteLine("output>>" + e.Data); 
process.BeginOutputReadLine(); 

process.ErrorDataReceived += (object sender, DataReceivedEventArgs e) => 
Console.WriteLine("error>>" + e.Data); 
process.BeginErrorReadLine(); 

process.WaitForExit(); 

Console.WriteLine("ExitCode: {0}", process.ExitCode); 
process.Close(); 

où Je suis en train d'exécuter les commandes et obtenir les résultats suivants: -

nslookup 
set type=mx 
domainname 

mais lorsque le code atteint cette ligne process.StandardInput.WriteLine("nslookup"); je suis arrivé cette exception StandardIn has not been redirected.

Répondre

1

L'erreur est assez descriptif: StandardIn has not been redirected

Vous avez redirigé stderr et stdout dans les lignes:

processInfo.RedirectStandardError = true; 
processInfo.RedirectStandardOutput = true; 

Mais comme l'erreur dit que vous avez pas redirigés StandardIn

Vous pouvez faites cela en redirigeant stdin avec:

processInfo.RedirectStandardInput = true;