0

我正在尝试从 Web 应用程序(在 Visual Studio 开发服务器上运行)启动外部 exe。当我从控制台应用程序运行下面的代码时,它工作正常,但是当我从网页运行它时,应用程序崩溃了。我认为这一定是权限问题,但是尝试了一些方法并无法使其正常工作。

      private void RunExe(string pythonOutputFileNameAndLocation)
      {

            var process = new Process { StartInfo = GetProcessStartInfo(pythonOutputFileNameAndLocation) };            

            // This is where the application crashes   
            process.Start();

            // ...do some more things here
       }


       private ProcessStartInfo GetProcessStartInfo(string pythonOutputFileNameAndLocation)
            {
                var startInfo = new ProcessStartInfo
                {
                    CreateNoWindow = true, 
                    UseShellExecute = false,
                    RedirectStandardOutput = true,
                    RedirectStandardInput = true,
                    FileName = _exeFileLocation,
                    WindowStyle = ProcessWindowStyle.Hidden,
                    Arguments = String.Format("--hideUI --runScript {0}", pythonOutputFileNameAndLocation)                
                };

                return startInfo;
            }

我要问的是为什么这段代码可以在控制台应用程序中运行,而不是在 Visual Studio Web 服务器中运行?

我正在使用 Windows 7 和 Visual Studio 2010。

编辑:

根据此处的要求,Windows 捕获的问题详细信息:

  问题事件名称:BEX
  应用名称:
  应用程序版本:2.2.2.2909
  申请时间戳:507bf285
  故障模块名称:MSVCR100.dll
  故障模块版本:10.0.40219.325
  故障模块时间戳:4df2be1e
  异常偏移量:0008af3e
  异常代码:c0000417
  异常数据:00000000
  操作系统版本:6.1.7601.2.1.0.256.48
  区域设置 ID:2057
  附加信息 1:c5a0
  附加信息 2:c5a0d9e876212c0d3929ba8445f002dc
  附加信息 3:5e93
  附加信息 4:5e93e44f8aa24f99d37e055f533d1658

我无法调试外部应用程序,因为我没有其中的代码。我也没有堆栈跟踪,因为我没有遇到异常。外部进程正在崩溃。

谢谢

4

3 回答 3

0

异常代码c0000417具有符号名称STATUS_INVALID_CRUNTIME_PARAMETER。谷歌搜索“python”和“STATUS_INVALID_CRUNTIME_PARAMETER”会导致围绕目录权限的各种 python 问题。您可以使用Process Monitor来发现在尝试运行您的应用程序时是否存在任何权限问题。

于 2013-02-11T13:46:45.283 回答
0

Ronnie,您可能遇到了 UAC 和安全访问问题。尝试禁用 UAC 并重试。此外,考虑在真正的 Web 服务器上,此过程将以 ASP.NET 或 Web 用户权限启动。出于安全原因,这些帐户受到限制。这意味着您尝试启动的应用程序可能会失败,因为它无法访问所需的文件。因此,不建议从 Web 服务器启动外部 exe。但是,您可以查看有关使用管理员凭据运行应用程序的这个 stackoverflow 问题。如何使用管理员凭据运行 c# 应用程序?

于 2013-02-11T13:38:40.250 回答
0

可能是权限的安全问题,但最好是您可以向我们提供有关异常的更多详细信息。

您是否尝试过在 IIS 上运行它并检查它是如何工作的?

于 2013-02-11T13:40:03.293 回答