1

简单地说,我在 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 身份验证。

4

1 回答 1

0

这最终成为一个权限问题。我必须授予对包含要使用 Perl 命令执行的脚本的目录的权限。

例如,权限将授予目录,在本例中为 dir1:

perl.exe dir1/script.pl

最初我只授予了包含 perl.exe 文件的文件夹的权限,这并没有解决问题。

于 2013-05-07T17:03:19.583 回答