IIS托管的WCF服务无法启动进程
问题描述:
我在服务器上有一个WCF服务,当我从客户端应用程序发送一个请求时,该服务将运行一个进程与网络节点通信,这个过程对我来说至关重要服务,如果它不运行整个服务是没用的。问题是这个过程永远不会运行:( 我一直在阅读大约两天的解决方案,但他们都没有帮助我,我给了服务管理员权限,并检查.exe文件路径是否正确这里是我的代码任何帮助将可以欣赏IIS托管的WCF服务无法启动进程
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
在适当的用户标识下运行您的过程。
第六:
您可以重定向标准错误,以及并从中读取,看看你的过程是否已经写任何异常
例如,
process.StartInfo.RedirectStandardError = true;
string errResult = process.StandardError.ReadToEnd();
您可以登录的结果,核实。
第七:
你也应该记录下你的过程
process.WaitForExit();
var exitCode = process.ExitCode;
亲爱Subbu的退出代码,实际上你的第六建议帮我找出这个问题我已经添加myprocess.StartInfo的原因.RedirectStandardOutput = true;并根据返回的值我发现有一个缺少配置文件,我的过程开始!非常感谢 – Amir