我正在编写一个运行 python 脚本的 WCF 服务。
为此,我一直在使用以下代码:
ProcessStartInfo start = new ProccessStartInfo();
start.FileName = "my/full/path/to/python.exe";
start.Arguments = string.Format("{0} {1}", script, args);
start.UseShellExecute = false;
start.CreateNoWindow = true;
start.RedirectStandardOutput = true;
start.RedirectStandardError = true;
Process p = new Process();
p.StartInfo = start;
p.Start();
p.WaitForExit();
string stderr = Process.StandardError.ReadToEnd();
string stdout = Process.StandardOutput.ReadToEnd();
现在我注意到(经过大量测试)是 Process 对象获取标准错误/输出或如果错误与“编译”错误相关,则捕获异常,例如如果我使用了未声明的变量或类似的东西那个,但是运行时异常和打印没有被捕获或无法在 C# 范围内读取。
我尝试运行整个“python.exe pythonCommand.py args”,因为它们是从 C# 代码发送的,或者只是在命令行提示符中发送 ProcessStartInfo.Arguments 中的内容,它在两种情况下都返回异常和打印,但是当我通过 C# Process 对象运行它时,我没有收到任何异常抛出来捕捉,也没有任何输出或错误。
我对此一无所知,这让我感到有点愚蠢(希望我是,并且这有一个简单的解决方案),如果偶然发现此案的人能帮助我,我将不胜感激。
谢谢,马特