プログラムでこれを行う方法について、ここのすべてのスレッドを読みましたが、機能させることができません。私のコードがどのように機能するかについての少しの背景。
サイトにログインし、App Pool モニターを選択します。探しているサーバーを選択できるドロップダウンがあります。そのサーバーからアプリ プールを取得してグリッドに表示するストアド プロシージャがあります。次に、テストしている次のコードがあります。
while (rdr.Read())
{
string appPool = rdr["AppPoolName"].ToString();
string permission = rdr["Permission"].ToString();
string serverIP = rdr["ServerIP"].ToString();
if (permission == "E")
{
lblErrorStart.Visible = false;
using (var serverManager = ServerManager.OpenRemote(serverIP))
{
ApplicationPool poolName = serverManager.ApplicationPools[appPool];
poolName.Stop();
lblSuccess.Visible = true;
}
}
else
{
lblErrorStart.Visible = true;
}
}
私が作成したリーダーは、AppPoolName、ServerIP、および SQL からのアクセス許可をプールします。
IIS6 に DirectoryEntry を使用していますが、うまく機能しますが、IIS7 では機能しません。
using (DirectoryEntry w3svc = new DirectoryEntry(string.Format("IIS://" + serverIP + "/W3SVC/AppPools/" + appPool)))
{
w3svc.Invoke("Recycle", null);
lblSuccess.Visible = true;
}
どんな助けでも大歓迎です。
編集: ディレクトリ サービスで発生する例外は System.Runtime.InteropServices.COMException です