コード例 #1
0
        public static List <IISAppPool> GetAppPools()
        {
            var poolList = new List <IISAppPool>();

            using (var serverManager = new ServerManager())
            {
                try
                {
                    foreach (var smAppPool in serverManager.ApplicationPools)
                    {
                        try
                        {
                            var appPool = new IISAppPool
                            {
                                Name         = smAppPool.Name,
                                X64          = !smAppPool.Enable32BitAppOnWin64,
                                CLRVersion   = smAppPool.ManagedRuntimeVersion,
                                Identity     = smAppPool.ProcessModel.IdentityType.ToString(),
                                UserName     = smAppPool.ProcessModel.UserName,
                                PipelineMode = Enum.GetName(typeof(ManagedPipelineMode), smAppPool.ManagedPipelineMode)
                            };

                            if (string.IsNullOrEmpty(appPool.UserName))
                            {
                                if (appPool.Identity == "ApplicationPoolIdentity")
                                {
                                    appPool.UserName = appPool.Name;
                                }
                                else if (appPool.Identity == "LocalSystem")
                                {
                                    appPool.UserName = "******";
                                }
                                else if (appPool.Identity == "LocalService")
                                {
                                    appPool.UserName = "******";
                                }
                                else if (appPool.Identity == "NetworkService")
                                {
                                    appPool.UserName = Environment.MachineName + "$";
                                }
                            }

                            poolList.Add(appPool);
                        }
                        catch (Exception ex)
                        {
                            Trace.TraceError("Could not retrieve app pool information. Error: {0}", ex.ToString());
                            Console.Error.WriteLine("Could not retrieve app pool information for {0} ", smAppPool.Name);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Trace.TraceError("Error in getting app pool information. Error: {0}", ex.ToString());
                    Console.Error.WriteLine("Could not retrieve app pool information.");
                }
            }

            return(poolList);
        }
コード例 #2
0
        public static IISAppPool OpenAppPool(string name)
        {
            string connectStr = "IIS://localhost/W3SVC/AppPools/";

            connectStr += name;

            if (IISAppPool.Exsit(name) == false)
            {
                return(null);
            }

            DirectoryEntry entry = new DirectoryEntry(connectStr);

            return(new IISAppPool(entry));
        }
コード例 #3
0
    public void ProcessServiceRequest(ServiceAction action, IISAppPool pool, int timeout)
    {
        AppPoolConfig status  = null;
        bool          success = false;

        switch (action)
        {
        case ServiceAction.Create:
            String username = pool.UserName;
            if (!String.IsNullOrWhiteSpace(pool.Domain))
            {
                username = pool.Domain + @"\" + pool.UserName;
            }
            AppPoolUtil.Create(pool.Name, pool.Server, config.Timeout, pool.ManagedRuntimeVersion, (int)pool.IdentityType, username, pool.Password);
            break;

        case ServiceAction.Delete:
            AppPoolUtil.Delete(pool.Name, pool.Server, config.Timeout);
            break;

        case ServiceAction.Query:
            break;

        case ServiceAction.Start:
            success = AppPoolUtil.Start(pool.Name, pool.Server, config.Timeout);
            break;

        case ServiceAction.Stop:
            success = AppPoolUtil.Stop(pool.Name, pool.Server, config.Timeout, 3, 5000);
            break;

        case ServiceAction.Restart:
            success = AppPoolUtil.Recycle(pool.Name, pool.Server, config.Timeout);
            break;

        case ServiceAction.StartMode:
            break;
        }

        status = AppPoolUtil.QueryStatus(pool.Name, false, pool.Server);

        if (status != null)
        {
            OnLogMessage(action.ToString(), "Name : [" + status.AppPoolName + "] Status : [" + status.State + "]");
            results.Add(status);
        }
    }
コード例 #4
0
        private static string CalcAppPoolRating(IISAppPool appPool)
        {
            int rating = 5;

            if (appPool.CLRVersion == "v2.0")
            {
                rating -= 2;
            }
            if (appPool.PipelineMode == "Classic")
            {
                rating -= 1;
            }
            if (!appPool.X64)
            {
                rating -= 1;
            }

            return(new string('*', rating));
        }