コード例 #1
0
        /// <summary>
        /// 操作应用程序池 (回收、停止、重启)
        /// </summary>
        /// <param name="operateAppPoolType">操作类型</param>
        /// <param name="appPoolName">应用程序池名称</param>
        /// <param name="logInsance">日志实例</param>
        /// <returns></returns>
        private static bool OperateAppPool(OperateAppPoolType operateAppPoolType, string appPoolName, string logInsance)
        {
            LogInfoWriter.GetInstance(logInsance).Info($"{operateAppPoolType}AppPool info appName:{appPoolName}");
            var appPool  = new DirectoryEntry("IIS://localhost/W3SVC/AppPools");
            var findPool = appPool.Children.Find(appPoolName, "IIsApplicationPool");

            findPool.Invoke(operateAppPoolType.ToString(), null);
            appPool.CommitChanges();
            appPool.Close();
            return(true);
        }
コード例 #2
0
ファイル: IisUtility.cs プロジェクト: geniussheep/MyTest
        /// <summary>
        /// 操作应用程序池 (回收、停止、重启)
        /// </summary>
        /// <param name="operateAppPoolType">操作类型</param>
        /// <param name="appPoolName">应用程序池名称</param>
        /// <param name="logInstanceName">日志实例</param>
        /// <returns></returns>
        private static bool OperateAppPool(OperateAppPoolType operateAppPoolType, string appPoolName,
                                           string logInstanceName)
        {
            //LogInfoWriter.GetInstance(logInstanceName).Info($"{operateAppPoolType}AppPool info appName:{appPoolName}");
//            var appPool = new DirectoryEntry("IIS://localhost/W3SVC/AppPools");
//            var findPool = appPool.Children.Find(appPoolName, "IIsApplicationPool");
//            findPool.Invoke(operateAppPoolType.ToString(), null);
//            appPool.CommitChanges();
//            appPool.Close();
            try
            {
                using (var mgr = new ServerManager(ApplicationHostConfigurationPath))
                {
                    var pool = mgr.ApplicationPools[appPoolName];
                    if (pool == null)
                    {
                        throw new Exception($"the {operateAppPoolType} AppPool is not exist!");
                    }
                    switch (operateAppPoolType)
                    {
                    case OperateAppPoolType.Recycle:
                        if (pool.State == ObjectState.Started || pool.State == ObjectState.Starting)
                        {
                            pool.Recycle();
                        }
                        break;

                    case OperateAppPoolType.Start:
                        pool.Start();
                        break;

                    case OperateAppPoolType.Stop:
                        if (pool.State == ObjectState.Started || pool.State == ObjectState.Starting)
                        {
                            pool.Stop();
                        }
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            return(true);
        }