私はこのプロジェクトをローカルでブラウザで実行すると、mvc 3アプリケーションで.EXEファイルを実行します。 。問題は、このプロジェクトを公開し、実行したボタンコードをクリックしてタスクマネージャーでプロセスを開始すると、ウィンドウ8.1上のIIS(8.5)サーバー上にホストするときですが、フロントには表示されません。
この例では、notepad.exeファイルを実行します。
次のコードはhtmlです。ユーザーがそのボタンのコントローラーメソッドをクリックすると、そのランコードと呼ばれます。
ユーザーがボタンをクリックすると、これが実行されるcodです。アカウント・コントローラ内部ASP.NETプロセス。タスクマネージャのタスクバックグラウンドを開始します。IIS8.5(Windows 8.1)の前に来ません。
$("#Button11").click(function (event) {
$.post("/Account/Start_Appl", {}, function (data) {
});
event.preventDefault();
});
と開始Start_Appl方法は、次のコード行を有しています。
public string Start_Appl()
{ string path="C:\\Windows\\System32\\notepad.exe";
ProcessStartInfo psi = new ProcessStartInfo();
psi.UseShellExecute = true;
psi.LoadUserProfile = true;
psi.WorkingDirectory = path;
psi.FileName = path;
Process.Start(psi);
return "ok";
}
iis(8.5)を使用して.EXEファイルを実行したい場合は、この問題を解決してください。 私はインターネットでチェックしますが、この問題の適切な解決策が見つかりません。
このリンクもチェックしていますが、何の助けもありません。
ASP.NET Process.Start not working on IIS8 (Windows 8.1)
あなたの問題はパーミッションだと思いますが、TBHは何でもかまいません。なぜサーバー上にメモ帳を開くWebページが必要なのですか? o_Oは無意味だと思われる – Liam
IISでサイトを実行しているプロセスは、ユーザー向けのプロセスではありません。したがって、あなたはそれを見ることができません。私がこれを行うと考えることができる唯一の方法は、ローカルユーザーとして実行され、何らかの種類の信号を待つ別のアプリケーション(コンソールアプリケーション、winforms、トレイアプリケーションなど)を書くことです。あなたのWebアプリケーションがこの信号を送信させると、コンソールアプリケーションがプログラムを起動します。しかし、私はこれが奇妙なことであると指摘しなければならないが、意味のあることはしない。 – GPW
いくつかのことについて考える: - 複数のユーザーがボタンを押すとどうする一度?ユーザーが誤ってボタンを2回以上押すと、何をするのですか(多くのコードを追加しない限り、コントローラーは必ずしも同じ人物であるとは限りません) - アプリケーションがユーザーの入力を望んでいると判断した場合ディスクスペースがなくなり、利用可能なアップデートを自動的に検出して、ユーザーに尋ねるなど)。この「解決策」が解決すると思われる問題を教えてください。これよりも良い方法があります。 – GPW