2

私のプロジェクトの 1 つで、.NET ページを MATLAB プロセスへの外部呼び出しと統合する必要がありました。これを行うために (そしてそのためにお金を使わないために)、基本的に 1 行を含む .NET ページ自体 (ASP.NET MVC 3) によって呼び出されるバッチ ファイルを作成しました。 MATLAB を起動してこのプロセスを実行します。

プロセス自体が終了すると、情報がテキスト ファイルに吐き出され、MATLAB がシャットダウンされます。.NET ページは、ファイルが作成されたことを確認すると、それを取得し、そのファイルで見つかったデータに基づいていくつかの計算を吐き出します。このプロセスは、私のローカル マシン上で完全に機能しており、サーバー上で VS 2012 (デバッグ モード) から実行すると、.

楽しい部分は、このサイトを展開することです。サイトをインターネットに正常に展開しました。このプロセスを除いて、サイト上のすべてが正常に機能しています。まったく実行されていないようです。このバッチ ファイルを含むディレクトリには、必要なすべてのアクセス許可 (IUSR および IIS_IUSRS) が関連付けられていますが、まったく実行されていないようです。

IIS 7.5 でホストされている Web ページでこのバッチ ファイルを正しく実行する方法を教えてください。はい、これがセキュリティ上の最善のアイデアではないことはわかっていますが、これを実行する必要があるだけです。

編集:プロセスを呼び出すためのコードは次のとおりです。

var matlabProcess = new Process {
    StartInfo = {
        FileName = "C:\\Program Files\\MATLAB\\R2012a\\bin\\WebCall.bat", 
        Arguments = string.Format("{0} {1}", seeds, weights)
    }
};

matlabProcess.Start();

バッチ ファイルには次のものが含まれます。

cd\
cd progra~1\MATLAB\r2012a\bin
start matlab -nosplash -nodesktop -minimize -r WebCall(%1,%2)

編集: 私の友人は、これが失敗する理由は、IIS にバッチ ファイル用のハンドラーがないためであると提案しました。もしそうなら、誰かが適切なハンドラーマッピングを作成して、彼の解決策が正しかったかどうかを確認する方法を教えてもらえますか?

ありがとう。

4

1 に答える 1

0

64ビットOS? もしそうなら、おそらくリダイレ​​クトが進行中です。32 ビット アプリの場合は、%ProgramFiles(x86)% を指定する必要があります。32 ビットまたは 64 ビットで動作するように、適切なものを確認して使用することをお勧めします。

UNC の場所から実行していますか (一部の新しい OS では考慮する必要があり、Win 8 および 2012 Server では実行できない場合があります)。

これをbatファイルの最初のステートメントとして入れます:

echo.CD=%cd% & pause
于 2013-02-24T00:37:22.510 に答える