2017-07-27 17 views
1

私はクライアントアプリケーションからリクエストを送信すると、サーバー上に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 

答えて

1

まずです:。

あなたmyprocess.Start()メソッド呼び出しの戻り値をチェックし、プロセスが正常に開始された場合、それはを返します。。戻り値を記録します。

Process.Start()

第二:プロセスが開始された後、あなたはプロセスが実行され、完了するまで待機コールを持っている必要があります

(あなたはすでにこれを実行することができます)。

Process.WaitForExit()

第三:あなたは、プロセスが開始されていないことを確認するにはどうすればよい

?タスクマネージャでプロセスを確認できますか?プロセスが開始され、失敗している可能性があります。あなたのプロセスによって作成されたログはありますか?あなたはイベントログをチェックしましたか?

第4:

プロセスにはどのUIコンポーネントもありますか? Windows Vista以降ではサービスとして実行しているときに、サービスでUIが表示されないことに注意してください。それはちょうどハングアップします。

フィフス:

は手動であなたのサービスと同じユーザーIDを使用してプロセスを実行することができますか? RunAsまたはPsExecを使用して、適切なユーザーIDでプロセスを実行できます。

シックス:

あなたにも標準エラー出力をリダイレクトして、あなたのプロセスは、任意の例外

などを書かれているかどうかを確認するために、そこから読み取ることができ、

process.StartInfo.RedirectStandardError = true; 

string errResult = process.StandardError.ReadToEnd(); 

あなたは結果を記録することができますし、それを確認してください。

セブンス:

ます。また、実際にあなたの第六の提案は、私がmyprocess.StartInfoを追加しました。この問題の原因を把握するために私を助けて、あなたのプロセスの終了コード

 process.WaitForExit(); 

     var exitCode = process.ExitCode; 
+0

親愛なるSubbuを記録する必要があります.RedirectStandardOutput = true;返された値に基づいて、私のプロセスの開始に欠けている設定ファイルがあることがわかりました!どうもありがとう – Amir

関連する問題