Exemplo n.º 1
0
        public override IISResultInfo <List <IISAppPoolInfo> > GetAllPoolInfos()
        {
            var data = new IISResultInfo <List <IISAppPoolInfo> >();
            var list = new List <IISAppPoolInfo>();

            try
            {
                using (var iisManager = new ServerManager())
                {
                    foreach (var item in iisManager.ApplicationPools)
                    {
                        list.Add(new IISAppPoolInfo()
                        {
                            Name = item.Name,
                            Enable32BitAppOnWin64 = item.Enable32BitAppOnWin64,
                            ManagedRuntimeVersion = item.ManagedRuntimeVersion,
                            State            = (AppPoolState)((int)item.State),
                            AppPoolAutoStart = item.AutoStart,
                            //WorkerProcessesCount = item.WorkerProcesses.LongCount(),
                            //MaxProcessesCount = item.ProcessModel.MaxProcesses,
                            IdentityType      = item.ProcessModel.IdentityType.ToString().ToEnum <AppPoolIdentityType>(),
                            AnonymousUserName = item.ProcessModel.UserName
                        });
                    }
                }
                data.Data = list;
            }
            catch (Exception e)
            {
                data.SetError(e);
            }
            return(data);
        }
Exemplo n.º 2
0
        public override IISResultInfo <List <IISAppPoolInfo> > GetAllPoolInfos()
        {
            var data = new IISResultInfo <List <IISAppPoolInfo> >();
            var list = new List <IISAppPoolInfo>();

            try
            {
                var rootEntity = GetAppPoolRootEntry();
                foreach (DirectoryEntry item in rootEntity.Children)
                {
                    list.Add(new IISAppPoolInfo()
                    {
                        Name = item.Name,
                        //Site = item.Site.Name,
                        //Path = item.Path,
                        IdentityType          = item.Properties["AppPoolIdentityType"].GetFirstValue().ToEnum <AppPoolIdentityType>(),
                        AnonymousUserName     = item.Properties["WAMUserName"].GetFirstValue(string.Empty),
                        ManagedRuntimeVersion = item.Properties["ManagedRuntimeVersion"].GetFirstValue(),
                        State                 = (AppPoolState)(item.Properties["AppPoolState"].GetFirstValue().ToInt() - 1),
                        AppPoolAutoStart      = item.Properties["AppPoolAutoStart"].GetFirstValue().ToBool(),
                        Enable32BitAppOnWin64 = item.Properties["Enable32BitAppOnWin64"].GetFirstValue().ToBool(),
                        //WorkerProcessesCount = item.Properties["WorkerProcessesCount"].GetFirstValue().ToLong(),
                        //MaxProcessesCount = item.Properties["AspProcessorThreadMax"].GetFirstValue().ToLong()
                    });
                }
                data.Data = list;
                rootEntity.Close();
            }
            catch (Exception e)
            {
                Trace.TraceError("{0} Exception:{1}", DateTime.Now.ToString(), e.ToString());
                data.SetError(e);
            }
            return(data);
        }
Exemplo n.º 3
0
        public override IISResultInfo StopAppPool(string appPoolName)
        {
            var ret = new IISResultInfo();

            try
            {
                HandleAppPool(appPoolName, "Stop");
            }
            catch (Exception e)
            {
                ret.SetError(e.Message, 500);
            }
            return(ret);
        }
Exemplo n.º 4
0
        public override IISResultInfo RecycleAppPool(string appPoolName)
        {
            var ret = new IISResultInfo();

            if (string.IsNullOrWhiteSpace(appPoolName))
            {
                return(ret.SetError("appPoolName is null", 404));
            }
            try
            {
                HandleAppPool(appPoolName, "Recycle");
            }
            catch (Exception e)
            {
                ret.SetError(e.Message, 500);
            }
            return(ret);
        }
Exemplo n.º 5
0
        public override IISResultInfo StopSite(IISStartInfo info)
        {
            var ret = new IISResultInfo();

            try
            {
                var siteEntry = GetByPath(info);
                if (siteEntry == null)
                {
                    return(ret.SetError("站点不存在", 404));
                }
                siteEntry.Invoke("Stop", null);
                siteEntry.Dispose();
            }
            catch (Exception e)
            {
                ret.SetError(e.Message, 500);
            }
            return(ret);
        }
Exemplo n.º 6
0
        public override IISResultInfo StartSite(IISStartInfo info)
        {
            var data = new IISResultInfo();

            try
            {
                using (var iisManager = new ServerManager())
                {
                    var site = iisManager.Sites.FirstOrDefault(p => p.Id == info.ParentID);
                    if (site == null)
                    {
                        return(data.SetError("site not found", 404));
                    }
                    switch (site.State)
                    {
                    case ObjectState.Starting:
                        break;

                    case ObjectState.Started:
                        break;

                    case ObjectState.Stopping:
                    case ObjectState.Stopped:
                    case ObjectState.Unknown:
                        site.Start();
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
            }
            catch (Exception e)
            {
                data.SetError(e);
            }
            return(data);
        }
Exemplo n.º 7
0
        public override IISResultInfo <List <IISSiteInfo> > GetAllSites()
        {
            var data = new IISResultInfo <List <IISSiteInfo> >();
            var list = new List <IISSiteInfo>();

            try
            {
                using (ServerManager iisManager = new ServerManager())
                {
                    foreach (var item in iisManager.Sites)
                    {
                        list.Add(new IISSiteInfo()
                        {
                            Name            = item.Name,
                            ID              = item.Id,
                            ServerAutoStart = item.ServerAutoStart,
                            ServerBindings  = string.Join(",", item.Bindings.Cast <Binding>().Where(p => p.Protocol.StartsWith("http", StringComparison.InvariantCultureIgnoreCase)).Select(p => ":{0}:{1}".FormatWith(p.EndPoint.Port, p.Host))),
                            DefaultDoc      = string.Join(",", item.GetWebConfiguration().GetSection("system.webServer/defaultDocument").GetCollection("files").Select(p => p["value"])),
                            State           = item.State.ToServerState(),
                            Applications    = new List <SiteApplicationInfo>(
                                item.Applications.Select(p =>
                                                         new SiteApplicationInfo()
                            {
                                Path         = p.Path.TrimStart('/'),
                                PhysicalPath = p.VirtualDirectories["/"].PhysicalPath,
                                PoolName     = p.ApplicationPoolName
                            })),
                        });
                    }
                }
                data.Data = list;
            }
            catch (Exception e)
            {
                data.SetError(e);
            }
            return(data);
        }
Exemplo n.º 8
0
        public override IISResultInfo RecycleAppPool(string appPoolName)
        {
            var data = new IISResultInfo();

            try
            {
                using (var iisManager = new ServerManager())
                {
                    var appPool = iisManager.ApplicationPools.FirstOrDefault(p => p.Name == appPoolName);
                    if (appPool == null)
                    {
                        return(data.SetError("appPool not found", 404));
                    }
                    switch (appPool.State)
                    {
                    case ObjectState.Starting:
                        break;

                    case ObjectState.Started:
                        appPool.Recycle();
                        break;

                    case ObjectState.Stopping:
                    case ObjectState.Stopped:
                    case ObjectState.Unknown:
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
            }
            catch (Exception e)
            {
                data.SetError(e);
            }
            return(data);
        }
Exemplo n.º 9
0
        public override IISResultInfo <List <IISSiteInfo> > GetAllSites()
        {
            var data = new IISResultInfo <List <IISSiteInfo> >();
            var list = new List <IISSiteInfo>();

            try
            {
                var rootEntity = GetWebRootEntry();
                foreach (DirectoryEntry item in rootEntity.Children)
                {
                    if (item.SchemaClassName == IIS_WEBSERVER)
                    {
                        var site = new IISSiteInfo();
                        site.ID              = item.Name.ToLong();
                        site.Name            = item.Properties["ServerComment"].GetFirstValue();
                        site.State           = item.Properties["ServerState"].GetFirstValue().ToEnum <ServerState>();
                        site.ServerAutoStart = item.Properties["ServerAutoStart"].GetFirstValue().ToBool();
                        site.ServerBindings  = string.Join(",", item.Properties["ServerBindings"].GetAllValue());
                        //site.AnonymousUserName = item.Properties["AnonymousUserName"].GetFirstValue();
                        site.DefaultDoc = item.Properties["DefaultDoc"].GetFirstValue();
                        //site.EnableDirBrowsing = item.Properties["EnableDirBrowsing"].GetFirstValue().ToBool();
                        //site.DefaultDoc = item.Properties["EnableDirBrowsing"].GetFirstValue();
                        var apps = new List <SiteApplicationInfo>();
                        foreach (DirectoryEntry item1 in item.Children)
                        {
                            if (item1.SchemaClassName != IIS_WEBVIRTUALDIR && item1.SchemaClassName != IIS_WEBDIRECTORY)
                            {
                                continue;
                            }
                            apps.Add(new SiteApplicationInfo()
                            {
                                Path = "",
                                //Path = item1.Name,
                                //Path = item1.Path,
                                //Name = null,
                                PoolName = item1.Properties["AppPoolId"].Value.ToStringEx()
                            });

                            foreach (DirectoryEntry item2 in item1.Children)
                            {
                                apps.Add(new SiteApplicationInfo()
                                {
                                    //Path = item2.Path,
                                    Path     = item2.Name,
                                    PoolName = item2.Properties["AppPoolId"].Value.ToStringEx()
                                });
                            }
                        }
                        site.Applications = apps;
                        list.Add(site);
                    }
                }
                data.Data = list;
                rootEntity.Close();
            }
            catch (Exception e)
            {
                data.SetError(e);
            }
            return(data);
        }