AE操作Server(2):获取Server下的服务

来源:互联网 发布:java web角色权限设计 编辑:程序博客网 时间:2024/05/02 00:29

1.引言

本篇中将继续为您介绍使用AE如何获取Server下的所有服务以及服务的信息

2.代码

    /// <summary>    /// Function:服务信息模板类    /// Coder:WUC    /// Date:2016-08-08    /// </summary>    public class ServiceModel    {        /// <summary>        /// 编号        /// </summary>        public string T_ID { get; set; }        /// <summary>        /// 服务器ID        /// </summary>        public string T_ConnectID { get; set; }        /// <summary>        /// 服务名称        /// </summary>        public string T_Name { get; set; }        /// <summary>        /// 服务地址        /// </summary>        public string T_URL { get; set; }        /// <summary>        /// 数据路径        /// </summary>        public string T_DataURL { get; set; }        /// <summary>        /// 文档地址        /// </summary>        public string T_MapURL { get; set; }        /// <summary>        /// 瓦片路径        /// </summary>        public string T_TileURL { get; set; }        /// <summary>        /// 注册时间        /// </summary>        public string T_RegisterDate { get; set; }        /// <summary>        /// 注册人        /// </summary>        public string T_RegisterPerson { get; set; }        /// <summary>        /// 备注        /// </summary>        public string T_Remark { get; set; }        /// <summary>        /// 服务类型        /// </summary>        public string R_MapServiceType { get; set; }        /// <summary>        /// 服务描述        /// </summary>        public string R_MapServiceDescription { get; set; }        /// <summary>        /// 服务注册状态        /// </summary>        public string R_RegisterState { get; set; }        /// <summary>        /// 服务启停状态        /// </summary>        public string R_StartOrStopState { get; set; }        /// <summary>        /// 服务切片状态        /// </summary>        public string R_TileState { get; set; }    }
        /// <summary>        /// 获取服务器下所有的服务        /// </summary>        /// <param name="serverModel"></param>        /// <returns></returns>        public List<ServiceModel> GetAllService(ServerModel serverModel)        {            if (serverModel == null) return null;            List<ServiceModel> mapServiceInfoList = new List<ServiceModel>();            string serviceType = ConstHelper.ServiceType;            IServerObjectAdmin pServerObjectAdmin = GetSOA(serverModel);            if (pServerObjectAdmin == null) return null;            IEnumServerObjectConfiguration pEnumServerObjectConfiguration = pServerObjectAdmin.GetConfigurations();            IServerObjectConfiguration pServerObjectConfiguration;            for (int i = 0; i < pEnumServerObjectConfiguration.Count; i++)            {                pServerObjectConfiguration = pEnumServerObjectConfiguration.Next();                if (pServerObjectConfiguration.TypeName == serviceType)                {                    ServiceModel mapService = new ServiceModel();                    mapService.T_Name = pServerObjectConfiguration.Name;                    mapService.R_MapServiceType = pServerObjectConfiguration.TypeName;                    mapService.R_MapServiceDescription = pServerObjectConfiguration.Description;                    IServerObjectConfigurationStatus pStatus = pServerObjectAdmin.GetConfigurationStatus(mapService.T_Name, mapService.R_MapServiceType);                    mapService.R_StartOrStopState = ConvertStatusToChinese(pStatus);                    mapServiceInfoList.Add(mapService);                }            }            return mapServiceInfoList;        }        /// <summary>        /// 将服务的状态转换为中文        /// </summary>        /// <param name="pStatus"></param>        /// <returns></returns>        private string ConvertStatusToChinese(IServerObjectConfigurationStatus pStatus)        {            string statusStr = string.Empty;            switch (pStatus.Status)            {                case esriConfigurationStatus.esriCSDeleted:                    statusStr = "已删除";                    break;                case esriConfigurationStatus.esriCSPaused:                    statusStr = "已暂停";                    break;                case esriConfigurationStatus.esriCSStarted:                    statusStr = "已启动";                    break;                case esriConfigurationStatus.esriCSStarting:                    statusStr = "正在启动";                    break;                case esriConfigurationStatus.esriCSStopped:                    statusStr = "已停止";                    break;                case esriConfigurationStatus.esriCSStopping:                    statusStr = "正在停止";                    break;            }            return statusStr;        }        /// <summary>        /// 获取服务器管理类        /// </summary>        /// <param name="serverModel"></param>        /// <returns></returns>        public IServerObjectAdmin GetSOA(ServerModel serverModel)        {            IAGSServerConnectionAdmin pAGSAdmin = GetSCA(serverModel);            if (pAGSAdmin == null) return null;            else return pAGSAdmin.ServerObjectAdmin;        }        /// <summary>        /// 获取连接对象        /// </summary>        /// <param name="serverModel"></param>        /// <returns></returns>        public IAGSServerConnectionAdmin GetSCA(ServerModel serverModel)        {            try            {                if (serverModel == null) return null;                IPropertySet propertySet = new PropertySetClass();                propertySet.SetProperty("URL", serverModel.URL);                propertySet.SetProperty("CONNECTIONMODE", esriAGSConnectionMode.esriAGSConnectionModeAdmin);                propertySet.SetProperty("SERVERTYPE", esriAGSServerType.esriAGSServerTypeDiscovery);                propertySet.SetProperty("USER", serverModel.UserName);                propertySet.SetProperty("PASSWORD", serverModel.Password);                propertySet.SetProperty("ALLOWINSECURETOKENURL", true);                //10.1新增接口                 IAGSServerConnectionName3 pConnectName = new AGSServerConnectionNameClass() as IAGSServerConnectionName3;                pConnectName.ConnectionProperties = propertySet;                IAGSServerConnectionAdmin pAGSAdmin = ((IName)pConnectName).Open() as IAGSServerConnectionAdmin;                return pAGSAdmin;            }            catch            {                return null;            }        }
        /// <summary>        /// 获取指定的服务属性信息        /// </summary>        /// <param name="serverModel"></param>        /// <param name="name">服务名</param>        /// <param name="type">服务类型</param>        /// <returns></returns>        public Dictionary<string,dynamic> GetConfigPropertyModel(ServerModel serverModel, string name, string type)        {            if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(type)) return null;            IServerObjectAdmin pServerObjAdmin = GetSOA(serverModel);            if (pServerObjAdmin == null) return null;            try            {                IServerObjectConfiguration pServerObjectConfiguration = pServerObjAdmin.GetConfiguration(name, type);                object names = new object();                object values = new object();                pServerObjectConfiguration.Properties.GetAllProperties(out names, out values);                string[] array_names = (string[])names;                dynamic[] array_values = (dynamic[])values;                Dictionary<string, dynamic> result = new Dictionary<string, dynamic>();                for (int i = 0; i < array_names.Length; i++)                {                    result.Add(array_names[i], array_values[i]);                }                return result;            }            catch            {                return null;            }        }
0 0
原创粉丝点击