我已经阅读了这里关于如何以编程方式执行此操作的所有线程,但我无法让它工作。关于我的代码如何工作的一些背景知识。
您登录到该站点并选择应用程序池监视器。有一个下拉菜单可让您选择要查找的服务器。我有一个存储过程,它将从该服务器中提取应用程序池并将它们显示在网格中。然后我有我正在测试的这段代码:
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;
}
}
我创建的阅读器汇集了来自 SQL 的 AppPoolName、ServerIP 和权限。
我为 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