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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!