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); }
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)); }
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); } }
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)); }