【发布时间】:2013-03-29 01:14:46
【问题描述】:
简单地说,我在使用 C# Web 应用程序中的输入参数执行 Perl 脚本时遇到问题。我从控制台应用程序执行代码没有问题,但在我的网络应用程序中,我没有收到任何响应。
我使用的代码是:
ProcessStartInfo cmdStartInfo = new ProcessStartInfo();
cmdStartInfo.FileName = "C:\gnu\perl.exe";
cmdStartInfo.Arguments = "run.pl --day=1 --format=2";
cmdStartInfo.RedirectStandardOutput = true;
cmdStartInfo.RedirectStandardError = true;
cmdStartInfo.RedirectStandardInput = true;
cmdStartInfo.UseShellExecute = false;
cmdStartInfo.CreateNoWindow = true;
cmdStartInfo.WorkingDirectory = TEMP_DIRECTORY;
Process cmdProcess = new Process();
cmdProcess.StartInfo = cmdStartInfo;
cmdProcess.OutputDataReceived += cmd_DataReceived;
cmdProcess.EnableRaisingEvents = true;
// Start
cmdProcess.Start();
cmdProcess.WaitForExit();
和
static void cmd_DataReceived(object sender, DataReceivedEventArgs e)
{
// Breakpoint to DEBUG here
string result = e.Data;
}
我使用的是 IIS 7。我想知道这是否存在问题?我正在使用身份模拟和 Windows 身份验证。
【问题讨论】:
-
作为更新,我在使用 Visual Studio 开发服务器时可以成功获取信息,但在 IIS 服务器上无法获取。
-
如果 CreateNoWindow 为 false 是否有效? ActivePerl 带有一个
wperl.exe,它可以在没有控制台的情况下工作,但我认为它的perl.exe需要一个控制台。 -
你到底有什么错误?您是否检查了错误流以获取信息?
-
我检查了标准错误,标准错误没有错误。这是一个空字符串。
-
发生的错误是当我运行 IIS 中托管的应用程序时 perl 没有执行。我已经让 Perl 在调用 perl.exe 时显示响应,但没有其他命令行参数。前
(perl.exe filename.pl --otherparams=1)