Ejemplo n.º 1
0
        /// <summary>
        /// 重启指定服务(可根据服务名称在加载的DLL中查询启动)
        /// </summary>
        /// <param name="ServiceName"></param>
        /// <param name="Ass"></param>
        /// <returns></returns>
        public static bool RestartService(Assembly AssServiceObj)
        {
            bool bResult = false;

            try
            {
                if (AssServiceObj.GetTypes().Count() > 0)
                {
                    foreach (var v in AssServiceObj.GetTypes())
                    {
                        if (v.IsNested || !v.IsPublic)
                        {
                            continue;
                        }
                        #region 1、判断服务是否存在并且Open
                        if (IsServiceRun(v.FullName))
                        {
                            ServiceHost sh = (ServiceHost)ServiceSuccessTable[v.FullName];
                            sh.Close();
                        }
                        #endregion
                        #region 2、判断服务是否在服务集合中,如果在则Remove
                        if (ServiceSuccessTable.ContainsKey(v.FullName.Trim()))
                        {
                            ServiceSuccessTable.Remove(v.FullName.Trim());
                        }
                        #endregion
                        #region 3、启动并配置WCF
                        Type type = AssServiceObj.GetType(v.FullName, true);
                        if (type.IsClass)
                        {
                            ServiceHost sh = new ServiceHost(type);

                            sh.Open();
                            ServiceSuccessTable.Add(v.FullName, sh);
                            bResult = true;
                            Console.ForegroundColor = ConsoleColor.Green;
                            Console.Write("\t【Load】");
                            Console.ForegroundColor = ConsoleColor.White;
                            Console.WriteLine("启动服务:" + v.FullName);
                        }
                        #endregion
                    }
                }
            }
            catch (Exception ex)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write("\t【Fail】");
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine("启动服务:" + AssServiceObj.FullName);
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("\t【Error】" + ex.Message);
                bResult = false;
            }

            return(bResult);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 根据服务名称获取服务状态
        /// </summary>
        /// <param name="ServiceName">服务名称</param>
        /// <returns>true:运行;false:停止</returns>
        public static bool IsServiceRun(string ServiceName)
        {
            bool bResult = false;

            if (!string.IsNullOrWhiteSpace(ServiceName))
            {
                if (ServiceSuccessTable != null &&
                    ServiceSuccessTable.ContainsKey(ServiceName.Trim()))
                {
                    ServiceHost sh = (ServiceHost)ServiceSuccessTable[ServiceName.Trim()];
                    if (sh.State == CommunicationState.Opened)  // 服务已启动
                    {
                        bResult = true;
                    }
                }
            }
            return(bResult);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 根据指定的服务名称卸载服务
        /// </summary>
        /// <param name="ServiceName">服务名称</param>
        /// <returns>true:卸载成功;false:卸载失败</returns>
        public static bool UnInstallService(string ServiceName)
        {
            bool bResult = false;

            if (ServiceSuccessTable != null &&
                ServiceSuccessTable.ContainsKey(ServiceName.Trim()))
            {
                try
                {
                    ServiceHost sh = (ServiceHost)ServiceSuccessTable[ServiceName.Trim()];
                    if (sh.State == CommunicationState.Opened)  // 服务已启动
                    {
                        sh.Close();
                    }
                    ServiceSuccessTable.Remove(ServiceName.Trim());
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.Write("【Done】");
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.WriteLine("卸载服务:" + ServiceName.Trim());
                    bResult = true;
                }
                catch (Exception ex)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.Write("【Fail】");
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.WriteLine("卸载服务:" + ServiceName.Trim());
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("\t【Error】" + ex.Message);
                    bResult = false;
                }
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write("【Fail】");
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine("卸载服务:" + ServiceName.Trim());
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("【Error】:此服务不存在!");
                bResult = false;
            }
            return(bResult);
        }