【问题标题】:Trouble executing Perl script in C# Web Application在 C# Web 应用程序中执行 Perl 脚本时遇到问题
【发布时间】: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)

标签: c# perl iis iis-7


【解决方案1】:

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

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

perl.exe dir1/script.pl

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

【讨论】:

  • 我有类似的问题,如何授予权限?
猜你喜欢
  • 2022-10-20
  • 2015-03-24
  • 1970-01-01
  • 2011-07-10
  • 1970-01-01
  • 2022-12-10
  • 2016-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多