我有一个需要运行 Python 脚本的 Web API 应用程序,该脚本又运行一个 Perl 脚本:) 做了一些其他的事情并从中获取输出结果。我这样做的方法是启动一个进程:
var start = new ProcessStartInfo()
{
FileName = _pythonPath, //@"C:\Python27\python.exe",
Arguments = arguments, //@"D:\apps\scripts\Process.py
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true
};
using (Process process = Process.Start(start))
{
using (StreamReader reader = process.StandardOutput)
{
var result = reader.ReadToEnd();
var err = process.StandardError.ReadToEnd();
process.WaitForExit();
return result;
}
}
里面的脚本尝试使用 P4 Python API 连接到 Perforce 服务器,然后 Perl 脚本也调用 P4 命令。从控制台应用程序运行此代码时,一切正常。该程序会自动获取 Perforce 设置(我有一个 P4V 客户端并指定了所有设置)。但是当从 ASP.NET Web API 运行时,它没有得到 settigns 并说它无法连接到 perforce:1666 服务器(我猜这是没有指定 settign 时的标准值)。
我确实知道没有多少人使用 Perforce,尤其是以这种方式并且可以在这里提供帮助,但我想知道从控制台应用程序和 Web API 应用程序运行此脚本之间有什么区别会导致这种不同的行为。