網站頻繁出現 Timer_Connection 錯誤,導致應用程式池因錯誤過多而停止,網站回傳 Service Unavailable。
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,避免安裝時需輸入帳號密碼。