首页 > 编程语言 >C#重启IIS指定网站和指定应用程序池

C#重启IIS指定网站和指定应用程序池

时间:2023-08-15 09:24:57浏览次数:40  
标签:Console IIS C# 指定 System static WriteLine WebSiteName using

using Jinher.AMP.BTP.Deploy;
using Microsoft.Web.Administration;
using Redis.Helper;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace Redis
{

    public class Program
    {
        static readonly string AppPoolName = ConfigurationManager.AppSettings["ApplicationPoolName"].ToString();
        static readonly string WebSiteName = ConfigurationManager.AppSettings["WebSiteName"].ToString();
        static readonly int SleepTime = int.Parse(ConfigurationManager.AppSettings["SleepTime"].ToString());
        static ServerManager sm;

        static void Main(string[] args)
        {
            Console.WriteLine($"检测程序启动,【{WebSiteName}】当网站或其应用池停下后,会自动启动。");
            sm = new ServerManager();
            new Thread(RecoveryWebSite).Start();
        }

        static void RecoveryWebSite()
        {
            while (true)
            {
                try
                {
                    var pool = sm.ApplicationPools[AppPoolName];
                    if (pool != null && pool.State == ObjectState.Stopped)
                    {
                        Console.WriteLine("检测到应用池" + AppPoolName + "停止服务");
                        Console.WriteLine("正在启动应用池" + AppPoolName);
                        if (pool.Start() == ObjectState.Started)
                        {
                            Console.WriteLine("成功启动应用池" + AppPoolName);
                        }
                        else
                        {
                            Console.WriteLine("启动应用池" + AppPoolName + "失败. " + SleepTime / 60 + "秒后重试启动");
                        }
                    }

                    var site = sm.Sites[WebSiteName];
                    if (site != null && site.State == ObjectState.Stopped)
                    {
                        Console.WriteLine("检测到网站" + WebSiteName + "停止服务");
                        Console.WriteLine("正在启动网站" + WebSiteName);
                        if (site.Start() == ObjectState.Started)
                        {
                            Console.WriteLine("成功启动网站" + WebSiteName);
                        }
                        else
                        {
                            Console.WriteLine("启动网站" + WebSiteName + "失败. " + SleepTime / 60 + "秒后重试启动");
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message.ToString());
                }

                GC.Collect();
                Thread.Sleep(SleepTime);
            }
        }
    }
}

 

标签:Console,IIS,C#,指定,System,static,WriteLine,WebSiteName,using
From: https://www.cnblogs.com/Fooo/p/17630417.html

相关文章

  • 7.4 C/C++ 实现链表栈
    相对于顺序栈,链表栈的内存使用更加灵活,因为链表栈的内存空间是通过动态分配获得的,它不需要在创建时确定其大小,而是根据需要逐个分配节点。当需要压入一个新的元素时,只需要分配一个新的节点,并将其插入到链表的头部;当需要弹出栈顶元素时,只需要删除链表头部的节点,并释放其所占用的内......
  • 7.5 C/C++ 实现链表队列
    链表队列是一种基于链表实现的队列,相比于顺序队列而言,链表队列不需要预先申请固定大小的内存空间,可以根据需要动态申请和释放内存。在链表队列中,每个节点包含一个数据元素和一个指向下一个节点的指针,头节点表示队头,尾节点表示队尾,入队操作在队尾插入元素,出队操作在队头删除元素,队......
  • torch.cat()
    要将一个大小为(2,2)的PyTorch张量和一个大小为(1,2)的张量拼接在一起,以形成一个新的大小为(3,2)的张量,你可以使用PyTorch库中的torch.cat()函数。以下是一个示例代码:importtorch#假设你有一个大小为(2,2)的张量tensor1和一个大小为(1,2)的张量tensor2tensor1=tor......
  • C#重启IIS指定网站和指定应用程序池, 以及资源释放。
    1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Linq;4usingSystem.Text;5usingSystem.Threading;6usingSystem.IO;7usingMicrosoft.Web.Administration;8910namespaceRecoveryWebSite11{12classProgr......
  • 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\)小于区间长度,所以在这个......