【问题标题】:Process does not work on windows server进程在 Windows 服务器上不起作用
【发布时间】:2015-01-05 14:15:16
【问题描述】:

我需要通过我的 Web 应用程序启动一个 .exe,它可以在我的本地计算机上运行 但它在服务器上不起作用。

我使用的是 windows server 2008 R2 Enterprise,这是我的代码

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"C:\hkLog\FirmwareUpdaterGUI.exe";
startInfo.WindowStyle = ProcessWindowStyle.Minimized;
startInfo.Arguments = list;
Process.Start(startInfo);

提前致谢,

【问题讨论】:

  • 服务器上是否存在C:\hkLog\FirmwareUpdaterGUI.exe
  • 做过任何基本的调试,比如检查返回值,检查异常,等等等等?
  • 服务器上当然存在文件,我添加了 try catch 块并检查是否有任何错误。它没有任何异常或错误
  • 可以在服务器上手动运行.exe吗? Web 应用程序是否具有必要的权限?
  • 是的,我可以手动运行 .exe 文件。

标签: c# asp.net windows process windows-server-2008-r2


【解决方案1】:

这可能是由于以下原因

  1. 默认情况下,ASP.NET 运行无权与桌面交互的工作进程 (Aspnet_wp.exe)。

  2. 默认情况下,IIS Admin Service 不允许其应用程序与桌面交互。

您需要更改 asp.net worker 访问权限以使其能够访问桌面以及更改 IIS 设置。 Microsoft support

【讨论】:

  • 我之前检查过此链接,但服务列表中没有“IIS Admin Service”。
【解决方案2】:

这可能是权限问题(基于您的应用程序域运行的身份)。我推荐以下。

如果您的工作进程尝试访问可执行路径以启动它并失败,您应该看到什么。失败将在进程监视器的条目中详细说明。然后,您可以确定您缺少哪些权限。

或者,您可以将可执行文件移动到您知道工作进程身份具有完全测试权限的路径。

【讨论】:

  • 您好,我已经下载并监控了该进程,并看到该进程开始但一旦开始就结束。 .exe 文件包含一个运行状态机但从不执行的计时器。它开始和结束之后。
  • 如果它在您的开发环境中运行良好但在服务器上运行不正常,那么我建议您使用远程调试器 (msdn.microsoft.com/en-us/library/y7f5zaaa.aspx) 来调试进程,看看为什么它没有按照您的预期执行。如果你能在本地重现同样的问题,我会先在本地调试。
猜你喜欢
  • 2017-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
  • 2011-07-15
  • 2023-03-05
  • 1970-01-01
  • 2017-04-23
相关资源
最近更新 更多