Windows 服务开发 以及 重启IIS应用池

2020-12-18 00:32

阅读:498

标签:start   proc   rgba   文件   strong   onstop   bug   sar   +=   

前言:最近公司部署的IIS项目应用池间断性停止,导致程序死掉,如下图

技术图片

如果不能及时重启,会导致很严重的后果。所以我耗时5分钟开发了这个服务,用于监听应用程序池的应用状态并重启。

一、windows 服务

  1、打开vs,新建windows服务程序(本实例使用vs 2019)。

技术图片

 2、点击MyServices.cs[设计]界面的切换到代码视图

技术图片

两个默认的方法OnStart和OnStop,顾名思义就是服务启动和停止的事件(自行按需写业务,其他方法请查阅官方文档)

public partial class IISRestart : ServiceBase
    {
        public IISRestart()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            // TODO:  在此处添加代码以启动服务。
            var timer = new Timer(1000 * 60) { AutoReset = true, Enabled = true }; //间隔1分钟
            timer.Elapsed += timer_Elapsed;
            timer.Start();
        }

        protected override void OnStop()
        {
        } 
        // 遍历应用程序池的应用,如果停止就重启
        private void timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            var manager = new Microsoft.Web.Administration.ServerManager();
            System.Threading.ThreadPool.QueueUserWorkItem((state) =>
            {
                while (true)
                {
                    var pools = manager.ApplicationPools;
                    foreach (var pool in pools)
                    {
                        if (pool.State == Microsoft.Web.Administration.ObjectState.Stopped)
                            pool.Start();
                    } 
                }
            });
        }
    }

 3、在MyServices.cs[设计]界面右击,选择“添加安装程序”

 技术图片

 技术图片

 4、单击ProjiectInstall.cs文件,然后单击serviceProcessInstaller1,属性栏的"Account"按需修改,我选择的"LocalSystem",

技术图片技术图片

单击serviceInstall1(如上图),属性栏的SartType按需设置,我选择的"Automatic"

技术图片

然后"Description"和"DisplayName"就是服务的名字和显示内容了

技术图片

5、生成解决方案,右击项目,选择属性,在"应用程序"选项卡中把"启动对象"改为"WindowsService.Program"

技术图片

 6、安装服务,找到项目的"bin\debug"路径

 技术图片

 把"InstallUtil.exe"复制到debug下(框选的文件)。InstallUtil默认在"C:\Windows\Microsoft.NET\Framework\版本号"下

技术图片

 以管理员身份打开cmd。路径为debug文件夹,输入"InstallUtil 应用程序名称.exe"即可安装服务

 卸载应用程序为"InstallUtil /u 应用程序名称.exe"

 完结!

 

Windows 服务开发 以及 重启IIS应用池

标签:start   proc   rgba   文件   strong   onstop   bug   sar   +=   

原文地址:https://www.cnblogs.com/qingdaye/p/13967506.html


评论


亲,登录后才可以留言!