【问题标题】:Trying to run multiple line cmd command inside my asp.net console app raised the following error "StandardIn has not been redirected"尝试在我的 asp.net 控制台应用程序中运行多行 cmd 命令引发以下错误“StandardIn 尚未重定向”
【发布时间】:2017-10-06 10:45:54
【问题描述】:

我的 asp.net 控制台应用程序中有以下代码:-

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

我在哪里尝试运行以下命令并获得结果:-

nslookup
set type=mx
domainname

但是当代码到达这一行时process.StandardInput.WriteLine("nslookup"); 我得到了这个异常StandardIn has not been redirected

【问题讨论】:

    标签: c# asp.net cmd console-application


    【解决方案1】:

    错误描述性很强:StandardIn has not been redirected

    您已在以下行中重定向了 stderr 和 stdout:

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

    但正如错误所说,您没有重定向StandardIn

    你可以通过重定向标准输入来做到这一点:

    processInfo.RedirectStandardInput = true;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2012-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多