【问题标题】:Starting new process from ASP.NET fails从 ASP.NET 启动新进程失败
【发布时间】:2012-08-08 14:29:20
【问题描述】:

我正在尝试从我的 WCF 服务启动一个新进程。为此,我使用

var process = Process.Start(
    new ProcessStartInfo { WorkingDirectory = config.WorkingDirectory,
                           FileName = config.WorkingDirectory,
                           Arguments = string.Format("{0} {1}", mpcName, jobId),
                           CreateNoWindow = false,
                           WindowStyle = ProcessWindowStyle.Hidden });

WebApp 正在使用单独的 AppDomain,其身份设置为在服务器上具有管理员权限的用户帐户。

Process.Start 抛出异常提示

Server execution failed,    at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)

我还测试了在 ProcessStartInfo 中设置用户和密码。指定密码非常棘手(SecureString),然后我收到了

The stub received bad data,    at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)

所以我跳过了这条路。

您知道我的问题的原因是什么以及如何解决它。

我忘记了:我使用的是 Windows Server 2008 R2、IIS 7

【问题讨论】:

  • 您是否尝试将 UseShellExecute=false 设置为 ProcessStartInfo(在这种情况下,可能需要调整 fileName 和 args)?

标签: asp.net wcf process


【解决方案1】:

我明白了!

这很奇怪,但唯一需要改变的是调用

Process.Start(exeFullPath, args);

显然 ProcessStartInfo 道具的组合很重要。

【讨论】:

  • args 参数是什么?
  • args 参数可以传递任何你想要的对象。然后可执行文件将评估它们。
【解决方案2】:

这个 q/a 帮助我在我的一个项目中解决了这个问题,但原因不同 --

试图以域用户身份从 nCrunch 运行的集成测试中启动进程。原来我的问题是一个很长的参数字符串。

(相同的参数字符串可以在没有用户/密码的情况下使用)

环境是 Windows 8,64 位。

无论如何,只需要以不同的方式传递 arg 数据。

【讨论】:

    猜你喜欢
    • 2020-02-12
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 2017-12-27
    • 2020-08-23
    • 2017-08-27
    相关资源
    最近更新 更多