2016-05-04 106 views
-2

C#コードでは、Process.Startを使用して、コードが実行されている同じPC上にローカルに保持されているexeを実行します。 Visual Studioでこれは正常に動作し、exeが呼び出され、cmdウィンドウがポップアップします。 exeが終了すると、コントロールはC#呼び出しアプリケーションに戻されます。ただし、WebアプリケーションがローカルIISに公開されると、アプリケーションプールIDがカスタムアカウントに設定されても、これは機能しなくなります。 exeファイルは実行中のプロセスとしてタスクマネージャーに表示されますが、実行中であることをユーザーに示すためにcmdウィンドウはポップアップしません。 try/catchブロックによってエラーがキャッチされません。アプリケーションプールIDには、exeを実行する権限があります。 Visual Studioにあるように、cmdウィンドウがIISのユーザーに表示されるようにするにはどうすればよいですか?exeを実行しているASP.NET Webアプリケーションは、IISではなくVSで動作します。

+0

EXEは、Webサーバーにログインしているユーザーとして実行していますか? – mason

+0

iisアプリケーションプールは、管理者権限を持つカスタムユーザーアカウントで実行されています。私はまた、この同じユーザーでPCにログオンすることをテストしました。残念ながら、同じ問題が存在します。このユーザーには、exeを実行する権限があります。 – LeedsWalker

+0

しかし、EXEはそれが必要なことをするかしないのですか?なぜあなたはCMDウィンドウのポップアップを見る必要がありますか? IISプロセスは対話型プロセスではありません。 –

答えて

1

セキュリティ上の理由からw3wp.exeがサンドボックス環境で実行されるため、Webアプリケーションから.exeを呼び出すことはお勧めできません。したがって、起動するスレッド/タスク/プロセスは、起動時と同じではありませんそれはあなた自身であり、したがって期待どおりに動作しない可能性があります。

コンソールアプリケーションをASP.NET Web API(以前のWCF)(IISまたはWindowsサービスでホストされている可能性があります)として再コーディングすることができます。

Similar question

+3

Web APIはWCFではありません。彼らは全く異なる技術です。 https://msdn.microsoft.com/en-us/library/jj823172(v=vs.110).aspx –

+0

Web APIは古いソープベースのテクノロジーの続きです。それは私の答えのポイントを変更することはありませんが、新しいvs古いを指摘してくれてありがとう... – IrishChieftain

+0

あなたのコメントのために、ありがとう、それは私がそれをすべて書き直しに熱心ではないので、失望です... – LeedsWalker

0

JavaScriptを使用してこの問題を解決しました。私はボタンに "OnClientClick"イベントを追加し、これが私のjavascript機能を開始しました。この関数は新しいActiveXObjectを作成し、問題のファイルを実行しました。これで、IIS経由で正常に動作します。

+1

javascriptで動作している場合、おそらくサーバーではなくクライアントで実行されている可能性があります。これはおそらく、ロックされたクライアントでは機能しません。 –

関連する問題