2017-10-06 1 views
0

Ich habe den folgenden Code in meiner asp.net Konsole Anwendung auszuführen: -Versuch mehrzeilige cmd Befehl in meiner asp.net Konsole app erhöhten der folgende Fehler „StandardIn nicht umgeleitet wurde“

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(); 

wo ich versuche, die folgenden Befehle ein und erhalten die Ergebnisse auszuführen: -

nslookup 
set type=mx 
domainname 

aber wenn der Code diese Zeile process.StandardInput.WriteLine("nslookup"); erreicht bekam ich diese Ausnahme StandardIn has not been redirected.

Antwort

1

Der Fehler ist ziemlich beschreibend: StandardIn has not been redirected

Sie haben stderr und stdout in den Leitungen umgeleitet:

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

Aber wie der Fehler sagt, Sie haben nichtStandardIn umgeleitet

können Sie tun Sie das, indem Sie stdin umleiten mit:

processInfo.RedirectStandardInput = true; 
Verwandte Themen