存在ExitCode为255的进程

5

[IIS 7.5 / Windows 7 / Visual Studio 2012]

我试图让我的MVC应用程序在同一台计算机上运行外部命令行工具。

我已经将整个包含该工具的文件夹授予了IIS_USRS执行权限。

我使用以下方式调用它:

ProcessStartInfo startInfo = new ProcessStartInfo();  
startInfo.WindowStyle = ProcessWindowStyle.Normal;  
startInfo.FileName = myPath;  
startInfo.Arguments = myArguments;  
PartialRunProcess = Process.Start(startInfo);  

没有任何异常(路径正确),但是进程会立即退出,退出代码为255。

我可以手动执行该进程。

可能的原因是什么?


这里的问题不在于参数。谢谢。 - AnalogKid17
1个回答

3

退出码 255 听起来像是您正在运行的工具(目标应用程序)中的 .NET 异常。您将无法在代码中捕获此异常。

我建议为目标应用程序注册调试器,以查看它抛出的异常:

  1. 进入 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options

  2. 创建一个名称为您要启动的可执行文件的键

  3. 创建一个名为 Debugger 的字符串

  4. 给它一个值,例如如果它是 .NET 应用程序,则是 vsjitdebugger.exe

这将启动调试器,您可以捕获异常。


谢谢。这正是问题所在。当我寻找标准的.NET ExitCode值时,我没有找到任何有用的信息。有人知道一个可靠的完整列表吗? - AnalogKid17
1
另一种启动调试器的方法(虽然不适用于这个特定问题,但适用于我的问题,即我从自己的程序中得到的退出代码255)是手动启动yourprogram.exe(如果您使用Visual Studio,则从Debug文件夹中),并在进程以代码255退出之前(例如,在导致错误的行之前放置Console.Read()),转到“任务管理器->进程->右键单击yourprocess.exe并单击调试->附加调试器”。这使我能够获得更详细的信息。 - Matthias
@Matthias:如果你有应用程序的源代码,你也可以添加一个try/catch块,然后在catch部分执行Debug.Break() - Thomas Weller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接