2011-08-26 8 views
9

私は作成したプログラムを持っていて、Webページが読み込まれるとサーバー上で起動したい。ここでASP.NET Cからプログラムを起動するC#

は、私は今のアプリケーションはしかし、それはすぐにクラッシュする「RUN」である

public partial class _Default : System.Web.UI.Page 
{ 
    Process app = new Process(); 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     app.StartInfo.FileName = @"D:/Path to /My/Program to be run.exe"; 
     app.Start(); 
    } 
} 

を持っているコードです。 私は単に(exeをダブルクリックして)アプリケーションを実行すると実行され、すべて正常です。

ここに何か不足している人は誰ですか?

+0

クラッシュするとエラーメッセージが表示されますか? –

+0

ところで、「アプリ」を公開するのはなぜですか? –

+0

"_ {アプリケーション名} _は動作を停止しました。Windowsは" – rlemon

答えて

10

ProcessStartInfoを使用できます。

ProcessStartInfo psi = new ProcessStartInfo(); 
psi.FileName = @"D:/Path to /My/Program to be run.exe"; 
psi.WorkingDirectory = IO.Path.GetDirectoryName(psi.FileName); 
Diagnostics.Process.Start(psi); 
+0

彼はすでにそれをしています、それは彼の 'app.StartInfo.FileName = @" ... ";'行です。 – qJake

+0

Duuuur、申し訳ありません。ハハ。 – Smur

+2

Worked!これは機能します。しかし、なぜこのように呼び出されなければならないのですか?実際の違いは何ですか(実際に何かを学んでいて、答えをコピー・ペーストするだけではありません) – rlemon

0

これは実行しようとする内容によって異なります。たぶんあなたのC#アプリからそれを実行するときに何かが欠けている。また、C#からアプリを実行するための適切な権限を持っていない可能性もあります。それは私が本当に何をしようとしているのかを知らずに言うことができます。

+0

私が実行しようとしているアプリはほとんど依存しません。これはシリアルデバイスから値を読み取り、フォームに表示するために書いた小さなHMIアプリケーションです。今はac#/ ASP.NET Webページからアプリケーションを開き、サーバーに接続されているシリアルデバイスから値を読み込み、データをdbまたはフラットファイルに保存し、ユーザーが今すぐまたは後日。 – rlemon

+0

このため、Windowsサービスを使用してプログラムを起動することをお勧めします。この方法で、HMIはデータをデータベースに格納し、後でどのアプリケーションでも、挿入されたdatetimeなどでソートされたデータを表示できます。 –

-1

あなたはJavaScriptでこのような何かを試してみました: -

var shell = new ActiveXObject("Shell.Application"); 
var appExe = @"D:/Path to /My/Program to be run.exe"; 
shell.ShellExecute(appExe , "", "", "open", "1"); 
3

を実行しようとしているアプリケーションは、ユーザ・インターフェースを持っているようですね。 ASP.NETアプリケーションプールアカウントを使用してサーバー上でこれを実行する場合は、アプリケーションをコンソールアプリケーションとして設計し、HMIデバイスなどの外部リソースへのすべてのアクセスをログに記録された例外。

+0

私は最終的にコンソールアプリケーションにアプリを変換されます。私はASP.NETについて全く新しく、その背後にあるコードとどのように相互作用しているのですか。私は現在、ゆっくりと勉強しているいくつかのASP.NETの本に奥深いです。 – rlemon

3

これはセキュリティ上の問題です。 binフォルダの外からexeを実行すると、セキュリティの脅威が生じます。実行しようとしているexeをbinフォルダにコピーする必要があります。

+0

.NETアプリケーション以外のフォルダにアクセス権を与えることはできますか? –

関連する問題