Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IIS承载的WCF服务无法启动进程_C#_Wcf_Iis_Process - Fatal编程技术网

C# IIS承载的WCF服务无法启动进程

C# IIS承载的WCF服务无法启动进程,c#,wcf,iis,process,C#,Wcf,Iis,Process,我在服务器上有一个WCF服务,当我从客户端应用程序发送请求时,该服务将运行一个与网络节点通信的进程,该进程在我的服务中是至关重要的,如果它不运行整个服务,则该服务将毫无用处。问题是此进程从未运行:( 我已经阅读了大约两天的解决方案,但没有一个对我有帮助,我已经授予服务管理员权限,并检查.exe文件路径是否正确。这是我的代码。任何帮助都将不胜感激 try { myprocess.StartInfo.UseShellExecute = false;

我在服务器上有一个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
第一:

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

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

流程启动后,您应该有一个等待调用,等待流程运行并完成

第三:

如何确定流程尚未启动?是否可以在任务管理器中检查流程?流程可能正在启动并失败。流程是否创建了日志?是否检查了事件日志

第四:

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

第五:

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

第六:

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

e、 g

您可以记录结果并进行检查

第七:

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

        process.WaitForExit();

        var exitCode = process.ExitCode;

亲爱的Subbu,实际上,您的第六个建议帮助我找出了这个问题的原因。我添加了myprocess.StartInfo.RedirectStandardOutput=true;根据返回值,我发现缺少一个配置文件,无法启动我的流程!非常感谢
        process.WaitForExit();

        var exitCode = process.ExitCode;