通往网站启动、停止、重启服务

界面操作如图

 后端代码

using Newtonsoft.Json;
using System;
using System.Configuration;
using System.ServiceProcess;
using System.Threading;
using System.Xml;

namespace NewLightingCloudWeb
{
    /// <summary>
    /// 服务器控制类
    /// </summary>
    public class ServerControl
    {

        private static string ServiceName = ConfigurationManager.AppSettings["servername"];
        private static string ServicePath = ConfigurationManager.AppSettings["ServicePath"];
        private static string serverruntime = ConfigurationManager.AppSettings["serverruntime"];

        /// <summary>
        /// 获取服务信息
        /// </summary>
        /// <returns></returns>
        public static string GetServerInfoNew()
        {
            Server sm = new Server();
            sm.Name = ServiceName;
            sm.Path = ServicePath;
            if (string.IsNullOrEmpty(serverruntime))
            {
                sm.days = "获取上次启动时间异常";
            }
            else
            {
                DateTime oldtime;
                if (DateTime.TryParse(serverruntime, out oldtime))
                {
                    sm.days = "通讯服务已运行" + (DateTime.Now - oldtime).Days + "天";
                }
                else
                {
                    sm.days = "时间转换失败";
                }

            }
            sm.State = GetServerState(sm.Name);
            return JsonConvert.SerializeObject(sm);
        }
        /// <summary>
        /// 获取指定服务状态
        /// </summary>
        /// <param name="_ServerName">服务名称</param>
        /// <returns></returns>
        public static string GetServerState(string _ServerName)
        {
            string msg = "";
            try
            {
                using (System.ServiceProcess.ServiceController control = new ServiceController(_ServerName))
                {
                    try
                    {
                        switch (control.Status)
                        {
                            case ServiceControllerStatus.Stopped:
                                msg = ("服务已停止");
                                break;
                            case ServiceControllerStatus.StartPending:
                                msg = ("服务正在启动");
                                break;
                            case ServiceControllerStatus.StopPending:
                                msg = ("服务正在停止");
                                break;
                            case ServiceControllerStatus.Running:
                                msg = ("服务正在运行");
                                break;
                            case ServiceControllerStatus.ContinuePending:
                                msg = ("服务即将继续");
                                break;
                            case ServiceControllerStatus.PausePending:
                                msg = ("服务即将暂停");
                                break;
                            case ServiceControllerStatus.Paused:
                                msg = ("服务已暂停");
                                break;
                            default:
                                msg = ("服务状态未知");
                                break;
                        }
                    }
                    catch
                    {
                        msg = ("系统中不存在此服务");
                    }
                }
            }
            catch (Exception ex) { msg = "获取服务状态异常:" + ex.Message; }

            return msg;
        }
        /// <summary>
        /// 启动指定服务
        /// </summary>
        /// <param name="_ServerName">服务名称</param>
        /// <returns></returns>
        public static string ServerStart(string _ServerName)
        {
            string msg = "启动服务";
            string setting = "";
            try
            {
                using (System.ServiceProcess.ServiceController control = new ServiceController(_ServerName))
                {
                    if (control.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)
                    {
                        control.Start();
                        msg = "启动服务成功";
                        setting = UpdateAppSetting();
                    }
                    else if (control.Status == System.ServiceProcess.ServiceControllerStatus.Paused)
                    {

                        control.Continue();
                        msg = "启动服务成功";
                        setting = UpdateAppSetting();
                    }
                    else if (control.Status == System.ServiceProcess.ServiceControllerStatus.Running)
                    {
                        msg = "启动服务成功";
                        setting = UpdateAppSetting();
                    }
                }
            }
            catch (Exception ex) { msg = "启动服务异常:" + ex.Message; }

            return msg + setting;
        }
        private static string UpdateAppSetting()
        {
            string setting = "";
            try
            {
                string key = "serverruntime";
                string value = DateTime.Now.ToString("yyyy-MM-dd");
                XmlDocument doc = new XmlDocument();
                //获得配置文件的全路径   
                string strFileName = AppDomain.CurrentDomain.BaseDirectory.ToString() + "Web.config";
                doc.Load(strFileName);
                //找出名称为“add”的所有元素   
                XmlNodeList nodes = doc.GetElementsByTagName("add");
                for (int i = 0; i < nodes.Count; i++)
                {
                    //获得将当前元素的key属性   
                    XmlAttribute _key = nodes[i].Attributes["key"];
                    //根据元素的第一个属性来判断当前的元素是不是目标元素   
                    if (_key != null)
                    {
                        if (_key.Value == key)
                        {
                            //对目标元素中的第二个属性赋值   
                            _key = nodes[i].Attributes["value"];

                            _key.Value = value;
                            break;
                        }
                    }
                }
                //保存上面的修改   
                doc.Save(strFileName);
                setting = "";
            }
            catch (Exception ex)
            {
                setting = "异常" + ex.Message;
            }
            return setting;
        }
        /// <summary>
        /// 停止指定服务
        /// </summary>
        /// <param name="_ServerName">服务名称</param>
        /// <returns></returns>
        public static string ServerStop(string _ServerName)
        {
            string msg = "停止服务失败";
            try
            {
                using (System.ServiceProcess.ServiceController control = new ServiceController(_ServerName))
                {
                    if (control.Status == System.ServiceProcess.ServiceControllerStatus.Running)
                    {
                        control.Stop();
                        msg = "停止服务成功";
                    }
                    else if (control.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)
                    {
                        msg = "停止服务成功";
                    }

                }
            }
            catch (Exception ex) { msg = "停止服务异常:" + ex.Message; }

            return msg;
        }

        /// <summary>
        /// 重启指定服务
        /// </summary>
        /// <param name="_ServerName">服务名称</param>
        /// <returns></returns>
        public static string ServerRestart(string _ServerName)
        {
            string msg = "服务重启失败,请刷新页面重试";
            try
            {
                if (ServerStop(_ServerName) == "停止服务成功")
                {
                    msg = "服务停止成功,";
                }

                Thread.Sleep(1000);

                ServerStart(_ServerName);

                if (GetServerState(_ServerName) != "服务正在运行")
                {
                    Thread.Sleep(1000);
                    ServerStart(_ServerName);
                }

                if (GetServerState(_ServerName) == "服务正在运行")
                {
                    msg += "服务器启动成功;服务重启完成!";
                }
                else
                {

                    msg += "当前服务状态" + GetServerState(_ServerName) + ";" + "服务器重启失败!";
                }
            }
            catch (Exception ex) { msg = "服务重启异常:" + ex.Message; }

            return msg;
        }

    }

    /// <summary>
    /// 服务信息
    /// </summary>
    public class Server
    {
        /// <summary>
        /// 已运行天数
        /// </summary>
        public string days { get; set; }
        /// <summary>
        /// 监控名称
        /// </summary>
        public string ServiceMonitor { get; set; }
        /// <summary>
        /// 服务名称
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 服务路径
        /// </summary>
        public string Path { get; set; }
        /// <summary>
        /// 服务状态
        /// </summary>
        public string State { get; set; }
    }
}

iis网站权限配置,找到对应应用程序池,设置标识为 LocalSystem

 配置完毕之后就可以通过网站对服务进行操作了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值