首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

建立 Windows 服務定時監控 IIS 應用程式池:自動偵測網站存活並重啟失效池

     編輯:關於ASP.NET

問題背景

網站頻繁出現 Timer_Connection 錯誤,導致應用程式池因錯誤過多而停止,網站回傳 Service Unavailable。

解決策略:Windows Service 定時探測 + 自動重啟

public void RestartAppPool() 
{
    var request = (HttpWebRequest)WebRequest.Create(ConfigurationManager.AppSettings["webfile"]);
    request.KeepAlive = false;
    try 
    {
        using (var response = (HttpWebResponse)request.GetResponse()) 
        {
            response.Close(); // 正常存活
        }
    }
    catch 
    {
        // 偵測失敗,重啟應用程式池
        var root = new DirectoryEntry("IIS://localhost/W3SVC/AppPools/" + ConfigurationManager.AppSettings["AppPoolName"]);
        root.Invoke("Start", null);
        root.CommitChanges();
        AddEventLog("重啟應用程式池於:" + DateTime.Now.ToLongTimeString());
        root.Close();
    }
}

關鍵設定

  • 專案需參考 System.DirectoryServices.dll(位於 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\)。
  • 引用 System.Net 命名空間。
  • 安裝程序帳號:serviceProcessInstaller1.Account = LocalSystem,避免安裝時需輸入帳號密碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved