0

当我启动一个BAT在本地启动带有参数的文件的进程时,一切正常。我将此站点上传到 Windows 服务器,然后一个进程运行此进程失败。它只是执行代码,什么也没发生。

我尝试UseShellExecute = false在有和没有的情况下运行它cmd...

我还能检查什么?

4

2 回答 2

0

从依赖项开始。例如:

  1. 您在服务器上是否有 cygwin 或类似的东西会实际运行 bash shell?
  2. 执行该进程的用户实际上是否有权启动 bash shell?
  3. 执行进程的用户是否有权在 bash 脚本中执行操作?
  4. 它们的文件路径或环境变量依赖关系吗?这些路径和变量是否存在?

一种测试方法是使用用于执行脚本的用户帐户登录到该服务器,以查看您是否可以自己运行它。

bash 脚本完全有可能在尝试提示用户输入时失败并挂起。也有可能 UAC 已打开,并且脚本需要提升权限才能执行操作。没有看剧本很难说。

于 2012-06-20T22:47:09.307 回答
0

您几乎可以肯定遇到安全/权限问题。检查服务器的事件日志(尤其是安全事件日志)。此外,如果可以的话,在服务器上运行 SysInternals Process Monitor (procmon) 也可能会有所帮助。

除非您已将网站设置为使用模拟,否则它将使用本地受限帐户运行。对于 Windows Server 2008,DefaultAppPool 将使用本地IIS APPPOOL\DefaultAppPool身份,几乎可以肯定它没有调用 bash 的权限。

它可能适用于您的本地开发机器,因为 Visual Studio 将模拟您(可能是本地管理员)以调试您的应用程序。

为了解决这个问题,您需要授予用于应用程序池的身份的权限,以便您的站点执行 bash,或者(这可能更容易)将应用程序池的身份更改为域用户(或本地用户,至少)。

于 2012-06-20T23:41:41.257 回答