【问题标题】:IIS hosted WCF service is not able to start a processIIS 托管的 WCF 服务无法启动进程
【发布时间】:2017-07-27 10:48:01
【问题描述】:

我在服务器上有一个 WCF 服务,当我从客户端应用程序发送请求时,该服务将运行一个进程与网络节点通信,这个进程在我的服务中至关重要,如果它不运行整个服务没用。问题是这个过程永远不会运行:( 我已经阅读了大约两天的解决方案,但没有一个对我有帮助,我已授予服务管理员权限并检查 .exe 文件路径是否正确这里是我的代码,任何帮助将不胜感激。

  try
        {
            myprocess.StartInfo.UseShellExecute = false;
            myprocess.StartInfo.CreateNoWindow = true;
            myprocess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
            myprocess.StartInfo.RedirectStandardOutput = true;
            myprocess.StartInfo.FileName = myprocessPathAndName; 
            myprocess.StartInfo.WorkingDirectory = 
            Path.GetDirectoryName(myprocessPathAndName);
            myprocess.StartInfo.Arguments = ConfigName;
            myprocess.Start();
            Log("myprocess Runnig " , sw);
            Log(myprocessPathAndName, sw);
            Log(myprocess.StartInfo.WorkingDirectory, sw);
        }
        catch (Exception e)
        {
            Log("Failed to run myprocess : " + e.Message, sw);
        }

这是日志

7/26/2017 4:05:15 AM : myprocessRunnig 
7/26/2017 4:05:15 AM : C:\inetpub\wwwroot\Station\COM\Dn\myprocess.exe
7/26/2017 4:05:15 AM : C:\inetpub\wwwroot\Station\COM\Dn

【问题讨论】:

    标签: c# wcf iis process


    【解决方案1】:

    第一:

    检查myprocess.Start() 方法调用的返回值。如果进程成功启动,它将返回true。记录返回值。

    Process.Start()

    第二:(你可能已经这样做了)

    进程启动后,您应该等待进程运行并完成。

    Process.WaitForExit()

    第三:

    您如何确定该过程尚未开始?您可以在任务管理器中检查进程吗?该过程可能正在启动和失败。您的进程是否创建了任何日志?你检查过事件日志吗?

    第四:

    您的流程是否有任何 UI 组件?请注意,作为服务运行时(在 Windows Vista 和更高版本中),该服务无法显示 UI。它只会挂起。

    第五:

    您是否能够使用与您的服务相同的用户 ID 手动运行您的进程?您可以使用RunAsPsExec 在适当的用户ID 下运行您的进程。

    第六:

    您也可以重定向标准错误并从中读取以查看您的进程是否写入任何异常

    例如,

    process.StartInfo.RedirectStandardError = true;
    
    string errResult = process.StandardError.ReadToEnd();
    

    您可以记录结果并检查它。

    第七:

    您还应该记录进程的退出代码

            process.WaitForExit();
    
            var exitCode = process.ExitCode;
    

    【讨论】:

    • 亲爱的Subbu,实际上你的第六条建议帮助我找出这个问题的原因我已经添加了 myprocess.StartInfo.RedirectStandardOutput = true;并且根据返回的值,我发现我的进程缺少一个配置文件来启动!非常感谢
    猜你喜欢
    • 2011-11-04
    • 1970-01-01
    • 2022-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    相关资源
    最近更新 更多