1. 程式人生 > 實用技巧 >Windows 服務開發 以及 重啟IIS應用池

Windows 服務開發 以及 重啟IIS應用池

前言:最近公司部署的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"

完結!