鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > .net技术 > asp.net编程 > >

删除程序池

来源:互联网 作者:佚名 时间:2015-12-08 03:00
网上新建程序池的方法很多,唯独删除程序池方法比较少,所以我记录下删除程序池的方法。网上找到这种///summary///&nbs..

网上新建程序池的方法很多,唯独删除程序池方法比较少,所以我记录下删除程序池的方法。


网上找到这种

/// <summary>           ///     删除指定程序池  -虚拟机上跑不通         /// </summary>           /// <param name="appPoolName">程序池名称</param>           /// <returns>true删除成功 false删除失败</returns>           public static bool DeleteAppPool(string appPoolName)         {             Logger.Info("In Method  DeleteAppPool()");             bool result = false;             DirectoryEntry appPools = new DirectoryEntry("IIS://localhost/W3SVC/AppPools");             foreach (DirectoryEntry entry in appPools.Children)             {                 Logger.Info("In Entry :" + entry.Name);                 if (entry.Name.Equals(appPoolName))                 {                     try                     {                         Logger.Info("delete Entry :" + entry.Name);                         entry.DeleteTree();                         Logger.Info("delete success");                         result = true;                         break;                     }                     catch                     {                         result = false;                     }                 }             }             return result;         }


试了下本地能跑通,虚拟机上跑不通,报的错毫无用处,不知道怎么办的情况下问了下我领导,我领导提示我用ServerManage的山删除方法,于是有了

/// <summary>         /// 根据程序池名称删除程序池 - 好用         /// </summary>         /// <param name="poolName"></param>         public static void DeleteAppPool(string poolName)         {             Logger.Info("in DeleteAppPool()");             ServerManager manager = new ServerManager();             manager.ApplicationPools.Remove(manager.ApplicationPools[poolName]);             Logger.Info("FInish Remove:" + poolName);             manager.CommitChanges();             Logger.Info("finsh commit");         }

期间,走了很多弯路,现在解释下。

因为我要实现的方法是删除服务器上所有不在使用的程序池,所以开始思路是

由于没有找到方法来获取Application下面应用程序,就不好判断程序池在不在使用中,所以用以下方法来判断程序池是不是在使用中:

获取ServerManager的Site,获取Site的Application,获取Application的ApplicationPoolName,存入使用中程序池列表中,

获取ServerManager的ApplicationPools,用foreanch遍历每个Pool,如该Pool不在使用中程序池列表中,就调用ServerManager.ApplicationPools.Remove方法删除


代码如下: 



网友评论
<