有沒有辦法檢測IIS(6或7.0)應用程序池何時啓動(或確實關閉)或通過IIS管理器手動回收?如何檢測IIS應用程序池啓動
由於其應用程序初始化模塊,這在II7.5中不是必需的。
但我需要知道應用程序池是否關閉,所以我可以重新啓動它。並在啓動時對該池上的Web應用程序進行熱身。
我想知道是否可以使用調度程序監視服務器日誌中的事件,但是當手動關閉應用程序池時無法找到日誌條目。
我意識到可能會出現應用程序池發生災難性故障並且未記錄日誌的情況。
感謝
有沒有辦法檢測IIS(6或7.0)應用程序池何時啓動(或確實關閉)或通過IIS管理器手動回收?如何檢測IIS應用程序池啓動
由於其應用程序初始化模塊,這在II7.5中不是必需的。
但我需要知道應用程序池是否關閉,所以我可以重新啓動它。並在啓動時對該池上的Web應用程序進行熱身。
我想知道是否可以使用調度程序監視服務器日誌中的事件,但是當手動關閉應用程序池時無法找到日誌條目。
我意識到可能會出現應用程序池發生災難性故障並且未記錄日誌的情況。
感謝
爲IIS 7,您可以使用Microsoft.Web.Administration dll.您可以檢查,programaticaly創建池的狀態。 ApplicationPool.State爲您提供了應用程序池的狀態。
下面是一個來自iis.net的示例添加一個池。
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Web.Administration;
namespace MSWebAdmin_Application
{
class Program
{
static void Main(string[] args)
{
ServerManager serverManager = new ServerManager();
Site site = serverManager.Sites["Racing Cars Site"];
site.Name = "Racing Site";
site.Applications[0].VirtualDirectories[0].PhysicalPath = "d:\\racing";
serverManager.ApplicationPools.Add("RacingApplicationPool");
serverManager.Sites["Racing Site"].Applications[0].ApplicationPoolName = "RacingApplicationPool";
ApplicationPool apppool = serverManager.ApplicationPools["RacingApplicationPool"];
apppool.ManagedPipelineMode = ManagedPipelineMode.ISAPI;
serverManager.CommitChanges();
apppool.Recycle();
}
}
}
http://www.iis.net/learn/manage/scripting/how-to-use-microsoftwebadministration
對於IIS 6 Check the status of an application pool (IIS 6) with C#