2017-06-10 1 views
0

私はプロセスを開いて終了するまで待たなければならないWebアプリケーションを持っています。 このプロセスは、Cygwinを使用する.shスクリプトです。私は次のコードを使用していIISでC#プロセスを実行できません

:私はIISExpressを使用してアプリケーションを実行する場合

 var process = new Process(); 
     var string processFileLocation = @"C:\script.sh"; 
     var string workingDirectoryLocation = @"C:\script"; 

     var processInformation = new ProcessStartInfo(processFileLocation) 
     { 
      WorkingDirectory = workingDirectoryLocation, 
      UseShellExecute = true 
     }; 

     process.StartInfo = processInformation; 
     process.Start(); 
     process.WaitForExit(); 

を、すべてがスクリプトがcallseされている、正常に動作します。

私はIISにそれを追加すると、プロセスは単にブロックされる、私はプロセスを呼び出す必要があります要求からすべての答えを受けることはありません。

Webサイトが使用するアプリケーションプールの "フルコントロール"アクセス許可を追加しましたが、それでも差はありません。

なぜこのように振る舞っているのでしょうか?

+0

無人設定で実行すると、スクリプトはプロンプトを生成して終了しません。 – GSerg

+1

これは許可の問題ではないことを確認するために、管理者アカウントでアプリケーションプールを実行してみてください。 –

+0

@KevinGosseありがとうございました。私はこれといくつかの闘争をしてきたし、あなたの答えはトリックでした。私はそれを "正しい"とマークすることができるように答えを投稿してください。 – CrazyDog

答えて

1

IISに入れたときに何かが実行されなくなった場合、権限が不十分である可能性が高くなります。まず、管理者アカウントでプールを実行します。それが問題を解決すれば、そこからあなたの欠けているパーミッションを見つけることができます。

+1

もちろん、Kevinが暗示しているように、プロダクションアプリケーションには 'Administrator'アカウントを使用しないでください。権限の不足が問題であるかどうかを判断するツールとしてのみ使用してください。その場合は、必要な権限のみを持つアプリケーション専用のアカウントを設定する必要があります。 – NightOwl888

関連する問題