有没有办法检测 IIS(6 或 7.0)应用程序池何时启动(或确实关闭)或通过 IIS 管理器手动回收?
由于其应用程序初始化模块,这在 II7.5 中不是必需的。
但我需要知道应用程序池是否关闭,以便我可以重新启动它。并在它启动时对该池上的 Web 应用程序进行预热。
我想知道是否可以使用调度程序监视服务器日志中的事件,但是当手动关闭应用程序池时我无法找到日志条目。
我意识到可能存在应用程序池发生灾难性故障并且没有记录的情况。
谢谢
有没有办法检测 IIS(6 或 7.0)应用程序池何时启动(或确实关闭)或通过 IIS 管理器手动回收?
由于其应用程序初始化模块,这在 II7.5 中不是必需的。
但我需要知道应用程序池是否关闭,以便我可以重新启动它。并在它启动时对该池上的 Web 应用程序进行预热。
我想知道是否可以使用调度程序监视服务器日志中的事件,但是当手动关闭应用程序池时我无法找到日志条目。
我意识到可能存在应用程序池发生灾难性故障并且没有记录的情况。
谢谢
对于 IIS 7,您可以使用Microsoft.Web.Administration dll。您可以以编程方式检查、创建池的状态。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 ,使用 C# 检查应用程序池 (IIS 6) 的状态