当我启动一个BAT
在本地启动带有参数的文件的进程时,一切正常。我将此站点上传到 Windows 服务器,然后一个进程运行此进程失败。它只是执行代码,什么也没发生。
我尝试UseShellExecute = false
在有和没有的情况下运行它cmd
...
我还能检查什么?
当我启动一个BAT
在本地启动带有参数的文件的进程时,一切正常。我将此站点上传到 Windows 服务器,然后一个进程运行此进程失败。它只是执行代码,什么也没发生。
我尝试UseShellExecute = false
在有和没有的情况下运行它cmd
...
我还能检查什么?
从依赖项开始。例如:
一种测试方法是使用用于执行脚本的用户帐户登录到该服务器,以查看您是否可以自己运行它。
bash 脚本完全有可能在尝试提示用户输入时失败并挂起。也有可能 UAC 已打开,并且脚本需要提升权限才能执行操作。没有看剧本很难说。
您几乎可以肯定遇到安全/权限问题。检查服务器的事件日志(尤其是安全事件日志)。此外,如果可以的话,在服务器上运行 SysInternals Process Monitor (procmon) 也可能会有所帮助。
除非您已将网站设置为使用模拟,否则它将使用本地受限帐户运行。对于 Windows Server 2008,DefaultAppPool 将使用本地IIS APPPOOL\DefaultAppPool
身份,几乎可以肯定它没有调用 bash 的权限。
它可能适用于您的本地开发机器,因为 Visual Studio 将模拟您(可能是本地管理员)以调试您的应用程序。
为了解决这个问题,您需要授予用于应用程序池的身份的权限,以便您的站点执行 bash,或者(这可能更容易)将应用程序池的身份更改为域用户(或本地用户,至少)。