首页 > 编程语言 >C#重启IIS指定网站和指定应用程序池, 以及资源释放。

C#重启IIS指定网站和指定应用程序池, 以及资源释放。

时间:2023-08-15 09:22:05浏览次数:36  
标签:System Thread IIS SleepTime C# 指定 WriteLog sm using

 1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Threading;
  6 using System.IO;
  7 using Microsoft.Web.Administration;
  8 
  9 
 10 namespace RecoveryWebSite
 11 {
 12     class Program
 13     {
 14         const string AppPoolName = "POD";
 15         const string WebSiteName = "POD";
 16         const int SleepTime = 1000 * 60;
 17 
 18         static void Main(string[] args)
 19         {
 20 
 21             Thread tAppPool = new Thread(() => RecoveryAppPool());
 22             tAppPool.IsBackground = true;
 23             tAppPool.Start();
 24 
 25             Thread tWebSite = new Thread(() => RecoveryWebSite());
 26             tWebSite.IsBackground = true;
 27             tWebSite.Start();
 28 
 29             //防止程序退出
 30             while (true)
 31             {
 32                 Thread.Sleep(SleepTime);
 33             }
 34         }
 35 
 36         static void RecoveryAppPool()
 37         {
 38             while (true)
 39             {
 40                 var sm = new ServerManager();
 41                 var pool = sm.ApplicationPools[AppPoolName];
 42                 if (pool != null && pool.State == ObjectState.Stopped)
 43                 {
 44                     WriteLog("检测到应用池" + AppPoolName + "停止服务");
 45                     WriteLog("正在启动应用池" + AppPoolName);
 46                     if (pool.Start() == ObjectState.Started)
 47                     {
 48                         WriteLog("成功启动应用池" + AppPoolName);
 49                     }
 50                     else
 51                     {
 52                         WriteLog("启动应用池" + AppPoolName + "失败. " + SleepTime / 60 + "秒后重试启动");
 53                     }
 54                 }
 55                 sm.Dispose();
 56                 sm = null;
 57                 Thread.Sleep(SleepTime);
 58             }
 59         }
 60 
 61         static void RecoveryWebSite()
 62         {
 63             while (true)
 64             {
 65                 var sm = new ServerManager();
 66                 var site = sm.Sites[WebSiteName];
 67                 if (site != null && site.State == ObjectState.Stopped)
 68                 {
 69                     WriteLog("检测到网站" + WebSiteName + "停止服务");
 70                     WriteLog("正在启动网站" + WebSiteName);
 71                     if (site.Start() == ObjectState.Started)
 72                     {
 73                         WriteLog("成功启动网站" + WebSiteName);
 74                     }
 75                     else
 76                     {
 77                         WriteLog("启动网站" + WebSiteName + "失败. " + SleepTime / 60 + "秒后重试启动");
 78                     }
 79                 }
 80                 sm.Dispose();
 81                 sm = null;
 82                 Thread.Sleep(SleepTime);
 83             }
 84         }
 85 
 86         static void WriteLog(string msg)
 87         {
 88             var fPath = "c:\\RecoveryWebsiteLog.txt";
 89             if (!File.Exists(fPath))
 90             {
 91                 File.Create(fPath).Close();
 92             }
 93 
 94             using (StreamWriter sw = new StreamWriter(fPath, true, Encoding.UTF8))
 95             {
 96                 sw.WriteLine(string.Format("{0} , 时间{1}", msg, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")));
 97             }
 98         }
 99     }
100 }

 

标签:System,Thread,IIS,SleepTime,C#,指定,WriteLog,sm,using
From: https://www.cnblogs.com/Fooo/p/17630438.html

相关文章

  • ABAP EXCEL批导和查看自建表样板
    结果:  内文:  源代码:ZHMRFI017:*&---------------------------------------------------------------------**&ReportZHMRFI017*&*&---------------------------------------------------------------------**&*&*&-------------......
  • Oracle启动监听报错:The listener supports no services或出现 unknown状态解决
    1、查看$ORACLE_HOME/network/admin/listener.ora文件中的host是否正确,能不能ping通2、查看$ORACLE_HOME/network/admin/tnsnames.ora文件中的host是否与listener.ora中的一致3、查看/etc/hosts文件中的127.0.0.1是不是localhost,listener.ora中host跟这里的是否一样4、登录数......
  • P3629 巡逻 LCA题解
    原题:洛谷P3629问题转化首先,给定的图是一个有\(n\)个点,\(n-1\)条边的无向连通图,这个图就等价于一棵树。不建立新的道路时,从\(1\)号节点出发,把整棵树上的每条边遍历至少一次,再回到\(1\)号节点,会恰好经过每条边两次,路线总长度为\(2(n-1)\),如下图最左边的部分所示。根据树......
  • (廿一)MIT公开课雷达系统工程之电子子对抗(ECM)
    0写在前面彻底疯狂~MIT公开课《雷达系统导论》与《雷达系统工程》的最后一讲,感谢关注,支持,希望能起到一定作用。1基本介绍RadarEnvironment:基本介绍:2电子对抗措施2.1MaskingMaskingECMagainstRadar:2.1.1PassiveMaskingAttributesofChaff:ChaffReflectivityandDensity......
  • ACCESS 说说组合框的应用
    在说应用之前,我觉得很有必要先讲讲组合框的一些常用属性:1.Dropdown:显示下拉菜单.这个属性可以在VBA下主动显示出来,但如果要隐藏它,只能通过转移焦点来达成.ComboObj.Dropdown2.AutoExpand:这是个布尔值,默认为True.一般会在Load事件中设置好.当用户输入的值与列表中......
  • CF杂题选刷
    CF1855BLongestDivisorsInterval对于任意一个区间\(\left[l,r\right]\),一定有\(\foralli\in\left[1,r-l+1\right]\),都\(\existsj\in\left[l,r\right]\),使得\(i\midj\)。因为模\(i\)意义下的正整数每\(i\)个一循环,由于\(i\)小于区间长度,所以在这个......
  • 知识图谱(Knowledge Graph)- Neo4j 5.10.0 Docker 安装
    知识图谱(KnowledgeGraph)-Neo4j5.10.0Docker安装知识图谱(KnowledgeGraph)-Neo4j5.10.0CentOS安装https://neo4j.com/docs/operations-manual/5/docker/introduction/拉镜像[root@localhost~]#cat/etc/docker/daemon.json{"registry-mirrors":["http......
  • vue--day64--Vue-resource
    安装npminstallvue-resource//main.js使用importVueResourcefrom"vue-resource"Vue.use(VueResource)安装好Vue-resource之后,在Vue组件中,我们就可以通过this.$http或者使用全局变量Vue.http发起异步请求......
  • Oracle数据库基本介绍
    一、Oracle数据库1.1、基本介绍Oracle数据库的一个基本任务是存储数据。Oracle数据库服务器是由一个数据库和至少一个数据库实例组成。数据库是一组存储的文件,而数据库实例是一组管理数据文件的内存结构。另外,数据库由后台进程组成。一个数据库和一个实例是紧密相连的,因此术语-......
  • linux安装禅道(CentOS)
    提示:禅道是用PHP开发的,只要安装一个MySQL,找一个能跑php的web应用服务器,把禅道源代码放到里面,然后按步骤安装就可以了。不一定要用XAMPP,XAMPP只是把PHP环境和mysql都集成了而已。如果你想下载其他的版本http://www.zentao.net/download.html第一种方式:下载禅道:(64位)http://dl.cn......