ASP .Net Webアプリケーションからリモートサーバーでプロセスを実行しようとしています(Webアプリケーションはプロセスと同じサーバー上にあります)。私が実行しているコードは以下の通りです:しかし、私は次のエラーを取得するASPを使用してローカルマシン上のプロセスを管理する.Net
ConnectionOptions conO = new ConnectionOptions();
// conO.Username = txtUser.Text;
// conO.Password = txtPassword.Text;
ManagementPath path = new ManagementPath(@"\\" + txtRemoteComputer.Text + @"\root\cimv2");
System.Management.ManagementScope oMs = new System.Management.ManagementScope(path, conO);
oMs.Connect();
ObjectGetOptions opt = new ObjectGetOptions();
ManagementClass classInstance = new ManagementClass(oMs, path, opt);
ManagementBaseObject inParams = classInstance.GetMethodParameters("Create");
inParams["CommandLine"] = txtPath.Text;
ManagementBaseObject outParams = classInstance.InvokeMethod("Create", inParams, null);
lblInfo.Text = outParams["returnValue"].ToString() + " Process ID: {0}" + outParams["processId"].ToString();
:
Operation is not valid due to the current state of the object.
誰もがこの問題のためのより良い解決策を持っていますか?
はところで、私は次のシナリオを持っている:
私のクライアントは、彼は多くの異なるもの(ログ記録、計算...)行ういくつかのアプリケーションを持っているサーバーを実行します。彼は、Webベースのクライアント(彼の携帯電話を含む)からこれらのアプリケーションを監視し、必要に応じて再起動することができるようにしたいと考えています。
このアプリケーションを使用して達成しようとしているのは、プロセスを終了して同じプロセスを開始することです。 System.Diagnosticsを使用する私は現在実行中のプロセスにクエリを実行することができましたが、リモートマシンのSystem.Diagnosticsはプロセスのみを参照することができ、それらと対話しないため、明らかに解決策ではありません。
サーバー側で行うことは、サーバー側で実行されます。クライアント上で任意のコードを実行する場合は、コードスニペットに基づいて何をしようとしているのかを動的に判断できるアプリケーションをクライアント側に持つ必要があります。おそらくクライアント上で動作するサーバーに[CSScript](http://www.csscript.net/)プロジェクトのようなものを組み込むことが役に立ちます。 –
私が実装しようとしているWebサイトと実行中のアプリケーションは、どちらもサーバー上で実際に動作しています。今、アプリケーションを再実装する必要がある場合は、おそらくWindowsサービスとして実装することを選択しますが、残念ながらこれらのアプリケーションは長年前に実装されており、ソースを入手することはできません。 1つの問題は、これらのアプリがクラッシュする傾向があることです。要件は、クラッシュしたかどうかを検出して再起動できることです。 – user496607
次に、ASP .Netを使用してリモートマシンでプロセスを実行しようとしていますか?あなたがクライアントで、サーバが同じマシンにあるなら、それは本当に「リモート」ではありませんか? –