Windows 服務開發 以及 重啟IIS應用池
阿新 • • 發佈:2020-11-13
前言:最近公司部署的IIS專案應用池間斷性停止,導致程式死掉,如下圖
如果不能及時重啟,會導致很嚴重的後果。所以我耗時5分鐘開發了這個服務,用於監聽應用程式池的應用狀態並重啟。
一、windows 服務
1、開啟vs,新建windows服務程式(本例項使用vs 2019)。
2、點選MyServices.cs[設計]介面的切換到程式碼檢視
兩個預設的方法OnStart和OnStop,顧名思義就是服務啟動和停止的事件(自行按需寫業務,其他方法請查閱官方文件)
public partial class IISRestart : ServiceBase { publicIISRestart() { 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"
完結!